laravel

laravel で認証でリダイレクトした際に、認証後に元のページに戻す

laravel 5.4

middleware で auth を指定しているページにアクセスした際に、認証前だとリダイレクトがかかります。
その後に認証をしたら、もともと閲覧したかったページにリダイレクトするようにします。

認証にはじかれた際にリダイレクトする箇所で、閲覧したかったページをsessionに保存します

/app/Exceptions/Handler.php
    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }
        return redirect()->guest(route('login'))->with('path', $request->path());
    }

path というセッション名にパスを保存します。

認証画面のフォームで path を hidden で引き継ぎます

<input type="hidden" name="path" value="{{ session('path') }}" />

ログイン処理のコントローラー内で、 path があればパスに飛ばす処理を追加

元のページに飛ばすことが出来ます。