Edited at

Laravel 5.3の認証関連機能で新規登録・ログイン・ログアウト後のリダイレクト先を指定する方法

More than 1 year has passed since last update.


やりたいこと


  • php artisan make:authで認証関連機能を生成すると、新規登録・ログイン後は「/home」へ、ログアウト後は「/」へリダイレクトされるが、これを変更したい。


前提

* php artisan make:authで作成した認証関連機能であること


参考


設定方法


新規登録後のリダイレクト先を変更する



  • RegisterControllerの$redirectToプロパティを変更する


    app/Http/Controller/Auth/RegisterController.php

    <?php

    namespace App\Http\Controllers\Auth;

    //...

    class RegisterController extends Controller
    {

    //...

    protected $redirectTo = '/redirect/path/to/after/regist/'; //ここを変更

    //...

    public function __construct()
    {
    //環境別に切り替えるロジックなどが必要な場合、__construct内で指定してもOK
    $this->redirectTo = your_function('/redirect/path/to/after/regist/');

    // ...
    }

    //...
    }





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



  • LoginControllerの$redirectToプロパティを変更する


    app/Http/Controller/Auth/LoginController.php

    <?php

    namespace App\Http\Controllers\Auth;

    //...

    class LoginController extends Controller
    {

    //...

    protected $redirectTo = '/redirect/path/to/after/regist/'; //ここを変更

    //...

    public function __construct()
    {
    //環境別に切り替えるロジックなどが必要な場合、__construct内で指定してもOK
    $this->redirectTo = your_function('/redirect/path/to/after/regist/');

    // ...
    }

    //...
    }





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



  • LoginControllerでlogout()メソッドをオーバーライトする


    app/Http/Controller/Auth/LoginController.php

    <?php

    namespace App\Http\Controllers\Auth;

    // ...

    use Illuminate\Http\Request;

    class LoginController extends Controller
    {
    //...

    //AuthenticatesUsersトレイトで定義されたlogout()をオーバーライト。
    //最終行のreturn redirect();の内容を変更する。
    public function logout(Request $request)
    {
    $this->guard()->logout();

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

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

    return redirect('/redirect/path/to/after/regist/');
    }
    }