7

我有一个独特的用户创建流程,如下所示:

  1. 用户第一次来到我的网站,他们点击了一个按钮。
  2. 我在数据库中为他们创建了一个用户,并使用 UID 设置了一个 localStorage 键。
  3. 使用用于创建数据,我将数据保存在数据库中并将其与 UID 相关联。
  4. 用户回来了,如果他们在 localStorage 中设置了 UID,我会向他们展示他们之前创建的数据。
  5. 用户可以单击注册创建一个“真实”帐户,从该帐户开始,他们必须使用用户名和密码或其他服务(例如 Facebook)登录。

那么,我将如何使用 Meteor Accounts 和 User 模型来实现这一点?

简而言之:

  • 我需要创建没有信息(关于用户)的用户 mongo 文档。
  • 我需要通过仅具有 UID(充当“密码”)来验证用户身份。
4

2 回答 2

8
  1. 注册onCreateUser以在使用随机密码时添加“匿名”字段 ( {anonymous:1}),可能使用Meteor.uuid().
  2. 添加时间戳字段 ( {created:new Date()}) 以清除旧的匿名帐户。
  3. 执行旧匿名用户维护,例如删除超过一小时的匿名用户: Meteor.autorun(function() {Meteor.users.find({anonymous:1,$where:"new Date() - this.created > 360000"}).forEach(function (user) {
    Meteor.users.remove({_id:user._id})}});
  4. 在客户端:
    1. 总是提示输入“昵称”。这将成为官方用户名,或将永久使用在系统中。
    2. 检查客户端是否登录,如果没有,创建一个用户,昵称和“幻数”密码,然后登录。当他们点击注册时,在顶部写“注册”,但实际上只是更改他们的密码和$set:{anonymous:0}

不要使用 localStorage,也不要使用 UID。会话 cookie 是您的 UID。

于 2012-12-13T08:55:41.517 回答
1

我不知道如何帮助进行身份验证,但至于创建一个空白用户对象,我已经在服务器端成功完成了以下操作(使用不同的名称......):

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

于 2012-12-13T01:33:00.670 回答