Meteor:以编程方式生成密码重置令牌?

时间:2017-06-05 18:53:19

标签: meteor

在Meteor中,您如何以编程方式为用户生成/存储重置密码令牌(在用户自己在UI中自行询问的上下文之外)?

我正在发送自定义电子邮件,并希望在其中嵌入我自己的“重置密码”按钮。这要求我自己生成一个有效的重置密码令牌。

是否有任何我未注意到的无证帐户功能/帮助可以帮助我实现这一目标?谢谢!

1 个答案:

答案 0 :(得分:1)

对于大多数情况,我建议使用内置Accounts.sendResetPasswordEmail发送电子邮件并覆盖Accounts.emailTemplates.resetPassword以对电子邮件进行自定义。例如,您可以执行以下自定义重置链接:

services.password.reset

但是,如果您需要比此更多的自定义功能,则没有用于创建重置令牌的现成功能,但是如果您查看source code for Accounts.sendResetPasswordEmail,您会发现实际上您只需插入一个用户对象的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

现在您可以以任何您喜欢的方式向您的用户发送enteredUserCode,它应该可以使用。但要注意安全性 - 我认为缺少用于生成密码重置令牌的现成功能是故意的,并且意在阻止人们不小心创建密码重置方法。