2014-01-23 9 views
0

사용자가 '비밀번호 찾기 요청'을 처리하는 프로세스를 완전히 이해하지 못했습니다. 그냥 약간의 설명을 찾고 있습니다.Meteor forgotPassword & sendResetPasswordEmail dataflow

클라이언트에서 사용자의 전자 메일을 가져 와서 서버에 Accounts.sendResetPasswordEmail을 호출하는 Accounts.forgotPassword으로 전달합니다. Accounts.forgotPassword은 전자 메일 만 인수로 사용합니다.

그래서 Accounts.sendResetPasswordEmail 실제로 사용자에게 이메일을 전송하는 트리거,하지만 그

그냥 거기에 논리에 의해 혼동 ... userId을 찾고. 왜 전자 메일과 userId를 인자로하여 클라이언트로부터 sendResetPasswordEmail을 호출하지 않을까요?

답변

4

Accounts.sendResetPasswordEmail은 서버에서만 호출 할 수 있으며 Accounts.forgotPassword을 호출 한 결과 자동으로 호출된다는 점에 유의해야합니다. 따라서 일반적으로 직접 전화 할 필요는 없지만 Accounts.emailTemplates을 통해 이메일 (제목, 본문)을 사용자 정의하고 싶을 것입니다. 물론

, 당신은 방법을 통해 Accounts.sendResetPasswordEmail를 호출 할 수 있지만, 가장 일반적인 사용 사례 고려 : 나는 시스템의 사용자,하지만 난이 (NO Meteor.userId())에 기록하고 있지 않다

합니다. 내 계정에 첨부 된 이메일이 있습니다. 해당 정보만을 기반으로 재설정 된 비밀번호 이메일을 받고 싶습니다. 그게 바로 Accounts.forgotPassword이하는 일입니다. 얼마나 편리한 지!

대중에게 공개되어야하는 경로에서 이메일을 요구함으로써 사용자의 이메일을 모르는 악성 코드도 본질적으로 걸러냅니다.

+0

데이빗 감사합니다. 그래서 나는'Accounts.forgotPassword'를 호출하고,'Accounts.sendResetPasswordEmail (userId, [email]); '처럼 서버에서 정의한'Accounts.sendResetPasswordEmail'을 트리거합니다. 나는 완전히 얻는다. 하지만 어디서/어떻게'userId'를 얻고 있습니까? – Colton45

+1

자신의'Accounts.sendResetPasswordEmail'을 정의하지 마십시오. 그것은 이미 정의되어 있으며 귀하를 위해 호출됩니다. 약속 할께. :)'Accounts.emailTemplates'로 보내지는 것을 사용자 정의하십시오. –

+0

OH! 그건 내 연결 해제 였어. docs는 그 방법을 나열했기 때문에 서버에서 직접 정의해야한다고 생각했지만 참고 용으로 만 존재합니다. 서버에서 그 메소드의 사용 예를 찾을 수 없다는 것은 당연한 일입니다. 고맙습니다 :) – Colton45

관련 문제