オブジェクト指向とかデザインパターンとか開発プロセスとかツールとか

satoshi's ソフトウェア開発

js






当サイトはアフィリエイト広告を利用してます。

Laravel

Laravelでセッションタイムアウト後のログアウトで419エラーを出さないようにする方法

更新日:


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);
    }







-Laravel
-, , ,

Copyright© satoshi's ソフトウェア開発 , 2024 All Rights Reserved Powered by STINGER.