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

Meteor:以编程方式生成密码重置令牌?,meteor,Meteor,在Meteor中,如何以编程方式为用户生成/存储重置密码令牌(在UI中用户自己请求重置密码令牌的上下文之外) 我正在发送一封自定义电子邮件,希望在其中嵌入我自己的“重置密码”按钮。这需要我自己生成一个有效的重置密码令牌 是否有任何我不知道的未记录的帐户功能/帮助者可以帮助我实现这一目标?谢谢 对于大多数情况,我建议使用内置的来发送电子邮件,并覆盖以对电子邮件进行自定义。例如,您可以执行如下自定义重置链接: Accounts.emailTemplates.resetPassword.html=(用

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

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


是否有任何我不知道的未记录的帐户功能/帮助者可以帮助我实现这一目标?谢谢

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

Accounts.emailTemplates.resetPassword.html=(用户,url)=>
``;
但是,如果您需要更多的可定制性,则没有现成的函数来创建重置令牌,但是如果您查看,您会发现实际上您只需要在用户对象的
服务.password.reset
字段中插入一个对象,如下所示:

var-token=Random.secret();
var when=新日期();
var令牌记录={
令牌:令牌,
电邮:电邮,,
什么时候,,
原因:“重置”
};
Meteor.users.update(userId,{$set:{
“服务.密码.重置”:令牌记录
}});
var resetPasswordUrl=Accounts.url.resetPassword(令牌);

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

感谢您提供了非常详细的答案!很高兴这有帮助。还要注意的是,有一种方法可以改进此功能,因此在将来的Meteor版本中,这里的情况可能会发生变化。