繁体   English   中英

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

[英]Do accounts-password email tokens ever expire?

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

该令牌是否会过期?
如果是,在什么时间之后?

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

电子邮件重置数据(令牌、电子邮件和令牌创建日期)保存在用户记录中,如源代码所示

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

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

'services.password.reset.when'

不幸的是,一旦使用正确的令牌调用resetPassword方法,所有reset数据都会被取消。

这使得它对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.9)的最新版本,代币会过期,你可以看到这里的代码(我猜它已经相当长一段时间的情况下)。

重置密码令牌在 3 天后过期,当注册令牌在 30 天后过期

这两个参数可以使用以下命令进行配置:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM