我不完全理解处理来自用户的“忘记密码”请求的过程。只是想找一点澄清。
在客户端上,您接收用户的电子邮件并将其传递给Accounts.forgotPassword
,这会触发对服务器上Accounts.sendResetPasswordEmail
的呼叫。 Accounts.forgotPassword
仅将电子邮件作为参数。
因此触发Accounts.sendResetPasswordEmail
实际上将电子邮件发送给用户,但是正在寻找userId
...
只是对那里的逻辑感到困惑。为什么不通过电子邮件和userId作为参数从客户端调用sendResetPasswordEmail?
答案 0 :(得分:5)
重要的是要注意Accounts.sendResetPasswordEmail
只能从服务器调用,并且会在调用Accounts.forgotPassword
时自动为您调用。所以一般来说你不需要直接调用它,但是你可能想要通过Accounts.emailTemplates自定义电子邮件(来自主题,正文)。
当然,您可以通过方法调用Accounts.sendResetPasswordEmail
,但请考虑最常见的用例:
我是系统的用户,但我没有登录(没有Meteor.userId()
)。我有一封附在我帐户上的电子邮件。我想仅根据该信息获取重置密码电子邮件。这正是Accounts.forgotPassword
为你做的。多么方便!
另请注意,要求在必须向公众公开的路线上发送电子邮件,您本身也会过滤掉不了解您用户电子邮件的坏人。