【问题标题】:Meteor Accounts - Users Logged Out on RefreshMeteor 帐户 - 用户在刷新时注销
【发布时间】:2014-04-17 22:45:13
【问题描述】:

我正在使用“accounts-base”和“accounts-password”包以及 Accounts.createUser 方法从登录表单创建用户(即我没有使用 accounts-ui 包)。

documentation 解释说这样创建的用户包含一个“服务”对象

"包含特定登录服务使用的数据。例如,它的 重置字段包含忘记密码链接使用的令牌,及其 resume 字段包含用于让您保持登录状态的令牌 会话。”

这是真的,使用我的登录表单创建的帐户都有 loginTokens。但是,当我刷新浏览器时,这些令牌被删除并且用户被注销。

文档似乎表明恢复令牌由 accounts-base / accounts-password 包自动处理。我错过了什么?

Accounts.createUser({
      username: username,
      email: username,
      password: password
    }, function (err) {
      if (err) {
        alert(err)
      } else {            
        Router.go('/member/' + Meteor.userId() +'/edit')               
      }
    });

创建:

 "resume" : 
{ "loginTokens" : 
  [
   {
   "when" : ISODate("2014-04-17T22:13:50.832Z"),
   "hashedToken" : "KstqsW9aHqlw6pjfyQcO6jbGCiCiW3LGAXJaVS9fQ+o=" 
   } 
  ] 
}

...但在刷新时:

"resume" : { "loginTokens" : [ ] } },

【问题讨论】:

  • Accounts.createUser 是一个服务器函数。您如何在回调中访问 Router.go 客户端函数?请注意您将代码放在哪里...
  • 根据documentation,Account.createUser 在客户端和服务器上都可用。我在两者上都使用它,用于不同的目的,但就这个问题而言,效果是相同的:用户已成功创建,令牌已创建,但在浏览器中刷新页面会注销用户并删除令牌。我承认我不清楚应该发生什么,但只要说我不希望用户在页面刷新时退出,无论出于何种原因。

标签: meteor token resume accounts


【解决方案1】:

在对我的代码进行详尽的审核后,我发现我(愚蠢地)在注销按钮事件范围之外调用 Accounts.logout 方法。在早期的代码重构过程中,它不知何故变成了“孤儿”

所以都是我的错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多