Laravelでユーザーがログインしている状態で放置され、セッションタイムアウト後にログアウトしようとすると、419エラーが出てしまいます。
この修正方法をぐぐってみたら、あちこちで、app\Exceptions\Hander.php を修正すればいいよと書かれています。
public function render($request, Throwable $exception)
{
if ($exception instanceof Illuminate\Session\TokenMismatchException) {
return redirect()->route('login');
}
return parent::render($request, $exception);
}
確かに、このように書けばログイン画面にリダイレクトされます。
とりあえず期待通りに動いてるかもしれませんが、困らないですか?
TokenMismatchException が発生したとき、すべてがログイン画面にリダイレクトされてしまいます。
単純に @csrf を書き忘れたとしても、ログイン画面にリダイレクトされてしまいます。
この変更を知らない人にとっては、謎の挙動になります。
アクセスしたURLがログアウトのURLだった場合だけ、ログイン画面にリダイレクトするようにしておけば、謎の挙動に困ることがなくなると思います。
public function render($request, Throwable $e) {
if ($e instanceof Illuminate\Session\TokenMismatchException) {
if (url()->current() == route('logout')) {
return redirect()->route('login');
}
}
return parent::render($request, $e);
}