2014-07-03 78 views
1

我剛開始學習Laravel,我正在關注文檔。我知道Laravel使用emails.auth.reminder視圖作爲電子郵件發送給重置爲token的用戶。在我emails.auth.reminder,我已經把以下內容:如何訪問`emails.auth.reminder`內的密碼重置令牌?

Hello Dear User,<br><br> 
We have received a request from your account to reset your password at Larblog. Please use the following link to reset your password.<br><br> 

{{ URL::to('user/resetpassword/' . Session::get('_token')) }}<br><br> 

If it wasn't you who tried to reset the password, simply ignore this email.<br><br> 
Thanks,<br> 
- Larblog 

請注意,我用的Session::get('_token')訪問令牌。這是我正在做的正確方法嗎?因爲它總是生成相同的標記。 Z7vKMT5ssfzeXsQcVkrYodoRmYnbjH0prdP83jBk一次又一次。當我用它來重置密碼時,它會顯示:Invalid token received。另外,我已經檢查了我的數據庫的password_reminders表,它顯示了不同的標記。當我使用存儲在數據庫中的令牌時,它可以正常工作。

那麼,在通過電子郵件發送的視圖中訪問令牌的正確方法是什麼?

回答

2

我不確定直接訪問密碼提醒令牌的方法是什麼,但通常在通過Password :: alerts()函數發送電子郵件時,而不是通常的電子郵件功能。使用這個時,$ token變量會自動傳遞到電子郵件視圖中,以便您可以使用它。

一個例子使用該功能是:

Password::remind(Input::only('email'), function ($message) 
{ 
    $message->subject('Password Reset'); 
}); 

然後訪問它的觀點很簡單,只要:

To reset your password, complete this form: {{ URL::to('reset', array($token)) }} 
+0

太好了!感謝您寶貴的回答:-) –

1

會話中的_token不是密碼提醒令牌 - 它是the CSRF token由於安全原因自動插入。

由於我不知道你的表和模型的樣子,很難說究竟如何你應該得到的實際密碼提示標誌,但它很可能是這樣的:

$user = User::find($someid); // first fetch your user 
$token = $user->passwordReminder->token; // now get the token 

如果你的表和模型不同於我的假設,隨時更新您的問題,我會很樂意更新我的答案。 :)

+0

謝謝您的回答:-) –

相關問題