Laravel5.5 ログイン前、ログアウト後のリダイレクト先を変更する方法

## 概要
Laravel5.5を使っていて、未ログイン時やログアウト後のリダイレクト先を変更したい場合の方法がわからなかったので、備忘録的に記事に残します。

## ログアウト後のリダイレクト先を変更する

初期値のままだとルートである「/」にリダイレクトされると思いますので、LoginControllerにlogoutの処理を上書きしてあげます。（元は「\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php」の150行目くらいに記載があると思います）

やることは
１．use Illuminate\Http\Request;を足す
２．logoutメソッドを足す

```app/Http/Controllers/Auth/LoginController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request; <-------足します


class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

========ここにlogoutのメソッドを足します。================
    public function logout(Request $request)
    {
        $this->guard()->logout();

        $request->session()->invalidate();

        return redirect('/login_form');
    }
========================================================
}

```

## 未ログイン時のリダイレクト先

まだログインしていない場合のリダイレクト先はHandler.phpに上書きしてあげます。（元は「\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php」の216行目くらいに記載があります）

やることは
１．use Request;を足す
２．use Illuminate\Auth\AuthenticationException;を足す
３．unauthenticatedメソッドを足す



```app/Exceptions/Handler.php

<?php

namespace App\Exceptions;

use Exception;
use Request;<-------足します
use Illuminate\Auth\AuthenticationException;<-------足します
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

class Handler extends ExceptionHandler
{
    /**
     * A list of the exception types that are not reported.
     *
     * @var array
     */
    protected $dontReport = [
        //
    ];

    /**
     * A list of the inputs that are never flashed for validation exceptions.
     *
     * @var array
     */
    protected $dontFlash = [
        'password',
        'password_confirmation',
    ];

    /**
     * Report or log an exception.
     *
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }

========ここにunauthenticatedのメソッドを足します。================
    public function unauthenticated($request, AuthenticationException $exception)
    {
        return $request->expectsJson()
            ? response()->json(['message' => $exception->getMessage()], 401)
            : redirect()->guest(route('login_form'));
    }
=================================================================

}
```

以上となります。
自分はこれに結構時間がかかっていたので、ご参考になれば幸いです。