Laravelでは、ログイン画面のまま放置しておくと@csrfトークンが切れてしまい、ログインしようとすると419エラーになるときがある。
開発者が使う時には、もう一度、ログイン画面を出せば新しい@csrfトークンになり、エラーが出ずにログインできるようになる。
けれど、ユーザーからすると一瞬でも419画面が出ると混乱の元になるだろう。
そこで回避策
ここでは一部のみが追記だけれども、Laravel8ではrender自体が「app/Exceptions/Handler.php」には元から記述されていない。
ので、ここではこうしました。
app/Exceptions/Handler.php
下記を追記
use Illuminate\Session\TokenMismatchException; use Throwable;
そして、下記を追加
public function render($request, Throwable $exception) { if ($exception instanceof TokenMismatchException) { return redirect('/auth/login');//ログイン画面のURLお好みで } return parent::render($request, $exception); }
この2点の記述で、419画面には飛ばず、再度ログイン画面に来る。
「あれ?一回入力したけど、、」
という疑問は残ってしまうけれども、今の所の解決策がこれしかない。(あったら教えて下さい)