2016-08-29 9 views
0

私はLaravel 5.2を使用していますが、ユーザーが送信できるフォームがあります。私は、Formヘルパーを使用していないが、私はすべての私のフォームブレードビューでこれを含めることを確認しましたLaravelのVerifyCsrfToken.phpのTokenMismatchException

:私はその上にフォームをWebページに行くとき

<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

、それがとしてフォームを表示します私はそれを提出する、それは期待どおりに動作します。

別のケースでは、私は歩いて30分後に戻ってきて、フォームを送信しようとすると、私はエラーを提示しています、私はWebページに行き、です。トークンが期限切れになっているので、私はかなり確信していますが、トークンが期限切れであるかどうかを確認し、トークンをリフレッシュする同じページにユーザーをリダイレクトし、フォームが期限切れになった。

if token expired 
    return redirect('login')->with('error', 'The form expired, please try again'); 
endif 

ではなく、Laravelのデフォルトのエラー画面を表示することを確認する方法はあります:確認し、提出に理論的には

、?

答えて

0

handleメソッドのカスタム動作をVerifyCsrfTokenミドルウェアに定義する必要があります。デフォルトでは、トークンが期限切れの場合、例外TokenMismatchExceptionがスローされます。

if ($e instanceof \Illuminate\Session\TokenMismatchException) { 

    return redirect() 
     ->back() 
     ->withInput($request->except('_token')) 
     ->with('status', 'The form has expired, please try again.'); 
} 
0

は、私は私のHandler.php renderメソッドにこれを追加しました
関連する問題