对于Accounts.forgotPassword()
和Accounts.sendVerificationEmail()
,会生成一个令牌。
该令牌是否会过期?
如果是这样,过了一段时间?
答案 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,
})