2012-12-12 9 views
7

Tôi có một dòng chảy sáng tạo người dùng duy nhất đó là như sau:Tạo người dùng không có mật khẩu trong Meteor

  1. dùng đến trang web của tôi lần đầu tiên và họ bấm vào một nút.
  2. Tôi tạo Người dùng trong DB cho họ và đặt khóa localStorage bằng UID.
  3. Sử dụng đi về tạo dữ liệu và tôi lưu dữ liệu trong DB và liên kết dữ liệu đó với UID.
  4. Người dùng quay lại và nếu họ có UID được đặt trong localStorage, tôi sẽ hiển thị cho họ dữ liệu mà họ đã tạo trước đó.
  5. Người dùng có thể nhấp Đăng ký để tạo tài khoản "thực" từ thời điểm họ sẽ phải đăng nhập bằng tên người dùng và mật khẩu hoặc dịch vụ khác (ví dụ: Facebook).

Vậy, làm cách nào để thực hiện điều này với Tài khoản Meteor và Mô hình người dùng?

Tóm lại:

  • tôi cần phải tạo tài liệu Mongo tài khoản không có thông tin (về người sử dụng).
  • Tôi cần xác thực người dùng bằng cách chỉ có UID (hoạt động như một "mật khẩu").

Trả lời

1

Tôi không biết cách trợ giúp xác thực, nhưng đối với việc tạo đối tượng người dùng trống, tôi đã thực hiện thành công những điều sau ở phía máy chủ (với tên khác ...):

Meteor.users.insert({profile: {name: 'Oompa Loompa'}, foo: 'bar'});

8
  1. Đăng ký onCreateUser để thêm một "ẩn danh" lĩnh vực ({anonymous:1}) khi một mật khẩu ngẫu nhiên được sử dụng, có thể được tạo ra với Meteor.uuid().
  2. Thêm trường dấu thời gian ({created:new Date()}) để xóa các tài khoản cũ, ẩn danh.
  3. Thực hiện bảo trì sử dụng nặc danh cũ, như xóa người dùng vô danh hơn hơn một tiếng đồng hồ cũ: Meteor.autorun(function() {Meteor.users.find({anonymous:1,$where:"new Date() - this.created > 360000"}).forEach(function (user) {
    Meteor.users.remove({_id:user._id})}});
  4. Trên client: "nickname"
    1. Luôn nhắc cho một Điều này sẽ trở thành tên người dùng chính thức hoặc sẽ ngồi trong hệ thống được sử dụng vĩnh viễn.
    2. Kiểm tra xem khách hàng đã đăng nhập chưa. Nếu không, hãy tạo người dùng có biệt hiệu và mật khẩu "số ma thuật", sẽ đăng nhập. Khi họ nhấp vào đăng ký, hãy viết "Đăng ký" tại số . thay đổi mật khẩu và $set:{anonymous:0}

họ không sử dụng localStorage, và không sử dụng UID. Cookie phiên là UID của bạn.

+0

Tại sao tôi không nên sử dụng localStorage? – Gezim

+0

Bạn nên sử dụng localStorage, chỉ cần không lưu trữ một cái gì đó như một UID. 'meteor-accounts' đã chăm sóc cookie/token /" UID "khía cạnh của những gì bạn đang cố gắng đạt được. Nhưng đừng để tôi không khuyến khích bạn viết gói của riêng bạn thực hiện chính xác những gì bạn muốn. Xem xét việc kiểm tra mã 'tài khoản thiên thạch' và suy nghĩ về cách triển khai người dùng ẩn danh. Tôi cho phép người dùng được tạo mà không có tên người dùng và tôi sẽ thêm trường ẩn danh, với chức năng tôi đã mô tả ở trên. Nó giải quyết những hạn chế chính của giải pháp của tôi: rằng bạn phải bắt đầu với một biệt danh. – DoctorPangloss

+0

Bạn có thể làm rõ ý nghĩa của "số ma thuật" trong ngữ cảnh này không? Bạn có nói rằng một trong những nên chọn một số ngẫu nhiên để đăng ký vô danh với? Hoặc là "số ma thuật" được tạo theo chương trình này? – Chanpory