2016-01-08 170 views
1

好吧,這是非常初學者,但我想要一個解釋。在下面的「postReset」方法中內置的Laravel密碼重置中,它指定了「token」...但是,當使用{!! csrf_field()!!}在視圖中,它會生成輸入名稱=「_ token」。在匹配名稱時,_是否作爲實際字符計數?只是混淆了數據庫遷移如何使用「標記」,但csrf字段將輸入名稱設置爲「_token」。Laravel密碼重置令牌

public function postReset(Request $request) 
    { 
     $this->validate($request, [ 
      'token' => 'required', 
      'email' => 'required|email', 
      'password' => 'required|confirmed|min:6', 
     ]); 

     $credentials = $request->only(
      'email', 'password', 'password_confirmation', 'token' 
     ); 

     $response = Password::reset($credentials, function ($user, $password) { 
      $this->resetPassword($user, $password); 
     }); 

感謝,

+0

'_token'僅用於跨站點請求僞造,不用於重置密碼,但您需要將'input'放入名爲'token'的輸入中,該名稱將用於重置密碼。 –

回答

1

你並不需要密碼重置_token或遷移。但是,如果您使用post方法將任何輸入發送到laravel,則這是絕對必要的。

Laravel可以輕鬆保護您的應用程序免受跨站點請求僞造(CSRF)攻擊。跨站點請求僞造是一種惡意攻擊,其中未經授權的命令是代表經過身份驗證的用戶執行的。

Source

我怎麼能包括在我的形式CSRF令牌?

可以通過讓這個表單中包括CSRF令牌

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"> 

提示:

您可以處理內部

app\Http\Middleware\VerifyCsrfToken.php 

的CSRF令牌過濾後的行動希望這可以幫助你。

相關問題