我不完全了解处理用户“忘记密码”请求的过程。只是需要一点澄清。

在客户端上,接收用户的电子邮件,然后将其传递给Accounts.forgotPassword,这将触发对服务器上Accounts.sendResetPasswordEmail的呼叫。 Accounts.forgotPassword仅将电子邮件作为参数。

因此,触发了Accounts.sendResetPasswordEmail实际上会将电子邮件发送给用户,但这是在寻找userId ...

只是被那里的逻辑所迷惑。为什么不从客户端以电子邮件和userId作为参数来调用sendResetPasswordEmail?

最佳答案

重要的是要注意,只能从服务器上调用Accounts.sendResetPasswordEmail,并且由于对Accounts.forgotPassword的调用而自动为您调用。因此,一般而言,您不需要直接调用它,但是您可能确实希望通过Accounts.emailTemplates自定义电子邮件(来自,主题,正文)。

当然,您可以通过方法调用Accounts.sendResetPasswordEmail,但请考虑最常见的用例:

我是系统的用户,但尚未登录(没有Meteor.userId())。我有一封附在我帐户中的电子邮件。我只想根据该信息获取重设密码的电子邮件。这正是Accounts.forgotPassword为您完成的工作。多么方便!

还要注意,通过在必须向公众公开的路线上要求发送电子邮件,您还从本质上过滤掉了不知道用户电子邮件的坏人。

关于javascript - meteor 忘记了密码和sendResetPasswordEmail数据流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21316924/

10-12 18:07