帐户 - 密码电子邮件令牌是否会过期?

时间:2015-10-25 20:08:28

标签: javascript meteor meteor-accounts

对于Accounts.forgotPassword()Accounts.sendVerificationEmail(),会生成一个令牌。

该令牌是否会过期?
如果是这样,过了一段时间?

2 个答案:

答案 0 :(得分:1)

目前没有与令牌过期相关的内置代码,既没有设置过期时间也没有设置过期时间。

电子邮件重置数据(令牌,电子邮件和令牌创建日期)保存在用户的记录中,如the source中所示:

var tokenRecord = {
  token: token,
  email: email,
  when: when
};
Meteor.users.update(userId, {$set: {
  "services.password.reset": tokenRecord
}});

因此,日期位于以下mongo选择器中:

'services.password.reset.when'

不幸的是,只要使用正确的令牌调用reset方法,就会取消设置所有resetPassword数据。

这使得validateLoginAttempt回调无法使用

Accounts.validateLoginAttempt(function(options) {
  if (options.methodName === 'resetPassword' && options.allowed === true) {
    console.log('resetPassword', options.user.services.password.reset); //undefined
  }
  return true;
});

同样,电子邮件验证令牌存储在user.services.email.verificationTokens中,(如果已设置)是令牌记录数组。

因此,日期为

'services.email.verificationTokens.when'

但是,您可以使用此信息定期使旧令牌无效,或者滚动您自己的本地分支或帐户密码包。

答案 1 :(得分:0)

在当前版本的Meteor(1.9)中,令牌确实会过期,正如您在代码中看到的here(我想已经很长时间了)。

Reset password tokens expire after 3 days,当enroll tokens expire after 30 days

这两个参数可以使用来配置:

Accounts.config({
    passwordResetTokenExpirationInDays : 10,
    passwordEnrollTokenExpirationInDays : 60,
})