やりたいこと
- 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/'); } }