2014-01-23 114 views
0

我不完全理解處理來自用戶的'忘記密碼'請求的過程。只是尋找一點澄清。流星忘記密碼&sendResetPasswordEmail數據流

在客戶端上,您接收用戶的電子郵件並將其傳遞到Accounts.forgotPassword,從而觸發服務器上的Accounts.sendResetPasswordEmail的呼叫。 Accounts.forgotPassword僅以電子郵件爲參數。

所以Accounts.sendResetPasswordEmail被觸發,實際上發送電子郵件給用戶,而是在尋找一個userId ...

通過有邏輯只是混淆。爲什麼不從客戶端用email和userId作爲參數調用sendResetPasswordEmail?

回答

4

請務必注意,Accounts.sendResetPasswordEmail只能從服務器調用,並且由於調用Accounts.forgotPassword而自動調用。所以一般來說,你不需要直接調用它,但是你可能想通過Accounts.emailTemplates自定義電子郵件(來自,主題,正文)。

當然,你可以通過調用的方法Accounts.sendResetPasswordEmail但考慮到最常見的使用情況:

我的系統的用戶,但我不(無Meteor.userId())登錄。我的電子郵件附在我的帳戶上。我想僅根據該信息獲取重置密碼電子郵件。這正是Accounts.forgotPassword爲你所做的。多麼方便!

還要注意,通過要求必須向公衆公開的路徑上的電子郵件,您本質上也會篩選出不知道用戶電子郵件的壞人。

+0

謝謝大衛。所以我調用Accounts.forgotPassword'並且觸發'Accounts.sendResetPasswordEmail',我在服務器上定義這個'Accounts.sendResetPasswordEmail(userId,[email]);'。我完全得到。但是,我在哪裏/如何獲得'userId'? – Colton45

+1

不要定義你自己的'Accounts.sendResetPasswordEmail'。它已經被定義並且會被你所需要。我承諾。 :)定製用'Accounts.emailTemplates'發送出去的東西。 –

+0

哦!那是我的脫節。由於文檔列表的方法,我想我不得不在服務器上自己定義它,但它只是供參考。難怪我找不到在服務器上使用該方法的例子。謝謝 : ) – Colton45