在Meteor中创建没有密码的用户

时间:2012-12-12 20:26:34

标签: authentication meteor accounts

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

  1. 用户第一次访问我的网站,然后点击按钮。
  2. 我在数据库中为他们创建了一个用户,并使用UID设置了localStorage密钥。
  3. 用于创建数据,我将数据保存在数据库中,并将其与UID相关联。
  4. 用户回来了,如果他们在localStorage中设置了UID,我会向他们展示他们之前创建的数据。
  5. 用户可以点击注册以创建一个“真实”帐户,从那里他们必须使用用户名和密码或其他服务(例如Facebook)登录。
  6. 那么,我如何通过Meteor Accounts和User模型实现这一目标?

    简而言之:

    • 我需要创建没有任何信息的User mongo文档(关于用户)。
    • 我需要通过使用UID(充当“密码”)来验证用户。

2 个答案:

答案 0 :(得分: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}
  5. 不要使用localStorage,也不要使用UID。会话cookie是您的UID。

答案 1 :(得分:1)

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

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