【问题标题】:Creating user with no password in Meteor在 Meteor 中创建没有密码的用户
【发布时间】:2012-12-12 20:26:33
【问题描述】:

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

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

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

简而言之:

  • 我需要创建没有信息(关于用户)的用户 mongo 文档。
  • 我需要通过一个 UID(充当“密码”)对用户进行身份验证。

【问题讨论】:

    标签: authentication meteor accounts


    【解决方案1】:
    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。

    【讨论】:

    • 为什么不应该使用localStorage?
    • 你应该使用localStorage,只是不要存储UID之类的东西。 meteor-accounts 已经处理了您想要实现的 cookie/token/"UID" 方面。但是,不要让我阻止您编写自己的包来满足您的需求。考虑查看meteor-accounts 代码并考虑如何实现匿名用户。我将允许在没有用户名的情况下创建用户,并添加匿名字段,具有我上面描述的功能。它解决了我的解决方案的主要限制:您必须以昵称开头。
    • 你能澄清一下在这种情况下你所说的“幻数”是什么意思吗?您是说应该选择一个随机数来注册匿名用户吗?还是这个“幻数”是以编程方式生成的?
    • 幻数的意思是随机字符串。匿名用户本质上在他们的机器上附加了一个帐户——或者可能是一些更复杂的指纹。在他们转换为真实用户(即注册)之前,他们无法恢复他们的帐户或在不同的地方使用它。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-07-03
      • 2016-06-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 2013-08-15
      相关资源
      最近更新 更多