[英]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.