PHP
laravel
artisan

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