Laravel

【Lravel8】ログイン画面のタイムアウトで419エラーが出る

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画面には飛ばず、再度ログイン画面に来る。

「あれ?一回入力したけど、、」

という疑問は残ってしまうけれども、今の所の解決策がこれしかない。(あったら教えて下さい)

-Laravel

© 2024 青い空とコーヒーと