我不完全理解处理用户“忘记密码”请求的过程。只是寻求一些澄清。
在客户端上,您获取用户的电子邮件并将其传递给 Accounts.forgotPassword
,这会触发对服务器上的 Accounts.sendResetPasswordEmail
的调用。 Accounts.forgotPassword
仅将电子邮件作为参数。
因此,触发了 Accounts.sendResetPasswordEmail
,它实际上将电子邮件发送给用户,但它正在寻找 userId
...
只是对那里的逻辑感到困惑。为什么不直接从客户端调用 sendResetPasswordEmail,并使用电子邮件和 userId 作为参数?
最佳答案
请务必注意,Accounts.sendResetPasswordEmail
只能从服务器调用,并且会在调用 Accounts.forgotPassword
时自动为您调用。因此,一般来说,您不需要直接调用它,但是您可能确实想通过 Accounts.emailTemplates 自定义电子邮件(发件人、主题、正文)。 .
当然,您可以通过方法调用Accounts.sendResetPasswordEmail
,但请考虑最常见的用例:
我是系统的用户,但我尚未登录(没有Meteor.userId()
)。我的帐户附有一封电子邮件。我想收到一封仅基于该信息的重置密码电子邮件。这正是 Accounts.forgotPassword
为您所做的。多方便啊!
另请注意,通过要求必须向公众公开的路线上提供电子邮件,您本质上也会过滤掉不知道用户电子邮件的坏人。
关于javascript - Meteor 忘记密码和发送重置密码电子邮件数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316924/