laravel5.4

Laravel CSRFトークン切れを500から403に変更

More than 1 year has passed since last update.

概要

500エラーをチェックしているとCSRFトークンの不正(有効期限切れ)でも
500番エラーとなるようで、監視などしていると毎回報告されてくる。

トークンの有効期限切れ(一定時間ブラウザを放置)については、
500番エラーにならないようにしたいので、例外処理の調整を行う。

実装

./laravel/app/Exceptions/Handler.php
    /**
     * HTTPレスポンスに対応する例外をレンダー
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
        // CSRFトークンが存在しない、トークン不一致時に発生
        // TokenMismatchException例外を500ではなく403で処理する
        if ($exception instanceof TokenMismatchException) {
            abort(403);
        }

        return parent::render($request, $exception);
    }

参考サイト

Laravel5.3、エラーページの表示
https://kore1server.com/355/Laravel5.3%E3%80%81%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%A1%A8%E7%A4%BA