Laravel 5.1 предотвращает несоответствие CSRF из исключения исключения

Я получаю проблемы с исключениями CSRF, которые бросают пользователю. Они происходят по совершенно невинным причинам, например, если кто-то слишком долго заполняет форму, когда они, наконец, отправляют ее, истекло, а токены не совпадают. Теперь, очевидно, это ошибка, но ей не нужно убивать все и бросать исключение.

Есть ли способ просто заставить его установить флеш-сообщение и перенаправить обратно на исходную страницу. Я не хочу отключать защиту CSRF. Я просто хочу, чтобы ошибки обрабатывались немного более изящно.

Это немного боль, я обычно добавляю метод в класс VerifyCsrfToken, чтобы поймать TokenMismatchException (в папке Middleware):

public function handle($request, Closure $next) { try { return parent::handle($request, $next); } catch(TokenMismatchException $e) { return redirect()->back()->withInput()->withErrors(['tokenMismatch' => 'Have you been away? Please try submitting the form again!']); } } 

Хотя, возможно, вы захотите настроить его в зависимости от того, как вы обрабатываете ошибки в своем приложении.

Это можно обрабатывать в приложении / Handler.php

Измените функцию рендеринга

 public function render($request, Exception $e) { return parent::render($request, $e); } 

К этому:

 public function render($request, Exception $e) { if ($e instanceof \Illuminate\Session\TokenMismatchException){ return redirect($request->fullUrl())->with('error',"Sorry your session has expired please resubmit your request."); } return parent::render($request, $e); }