我不完全了解处理用户“忘记密码”请求的过程。只是需要一点澄清。
在客户端上,接收用户的电子邮件,然后将其传递给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/