在Meteor中,如何以编程方式为用户生成/存储重置密码令牌(在用户没有在UI中自己请求时)?
我正在发送一封自定义电子邮件,并希望在其中嵌入我的自己的“重置密码”按钮。这要求我自己生成一个有效的重置密码令牌。
是否有一些我不知道的未记录的账户函数/助手可以帮助我实现这一点?谢谢!
我正在发送一封自定义电子邮件,并希望在其中嵌入我的自己的“重置密码”按钮。这要求我自己生成一个有效的重置密码令牌。
是否有一些我不知道的未记录的账户函数/助手可以帮助我实现这一点?谢谢!
Accounts.sendResetPasswordEmail
来发送邮件,并覆盖 Accounts.emailTemplates.resetPassword
做邮件的定制。例如,您可以像这样做一个自定义的重置链接:Accounts.emailTemplates.resetPassword.html = (user, url) =>
`<a href="${url}" style="{ something cool... }">Reset your password</a>`;
services.password.reset
字段中插入一个对象,如下所示:var token = Random.secret();
var when = new Date();
var tokenRecord = {
token: token,
email: email,
when: when,
reason: 'reset'
};
Meteor.users.update(userId, {$set: {
"services.password.reset": tokenRecord
}});
var resetPasswordUrl = Accounts.urls.resetPassword(token);
现在你可以通过任何方式向用户发送resetPasswordUrl
,它应该可以工作。但需要注意安全性——我认为缺少生成密码重置令牌的现成函数是有意为之,旨在防止人们轻率地创建密码重置方法。