LoginSignup
33
41

More than 3 years have passed since last update.

【Laravel】Logout後の遷移先を変更する。

Last updated at Posted at 2018-07-26

※ Laravel 5.6.27 以降の人は「loggedOut 関数を使う方法」まで読み飛ばして下さい。

app\Http\Controllers\Auth\LoginController.php は
ほとんど隠蔽されていてどこを修正して良いかわからない。

logout時の遷移先も AuthenticatesUsers で定義されてしまっているので
LoginController を以下の様に修正して無理やり遷移先を変更する。

AuthenticatesUsers.logout を別名 performLogout に変更

app\Http\Controllers\Auth\LoginController.php
// use AuthenticatesUsers;
use AuthenticatesUsers {
    logout as performLogout;
}

これで、AuthenticatesUsers の logout は performLogout として呼び出すことになる。

logout を作成する。

app\Http\Controllers\Auth\LoginController.php
public function logout(Request $request)
{
    $this->performLogout($request);
    return redirect()->route('admin.index'); // ここを好きな遷移先に変更する。
}

これで外部からは logout が呼ばれ、内部で performLogout を呼び出すことになる。

使用する Request を明示する

app\Http\Controllers\Auth\LoginController.php
use Illuminate\Http\Request;

定義されていないと思うので、先頭で logout に渡される Resuest を定義しておく。

loggedOut 関数を使う方法

Laravel 5.6.27以降では、認証スキャフォールドの登録および認証されたメソッドに基づいて
loggedOut関数が追加されている。
なので logout 関数を無理やり置き換えなくても
loggedOut関数を追加すればログアウト後の遷移先が変更できる。
loggedOut関数を記述しなければ、そのまま / に遷移する。

app\Http\Controllers\Auth\LoginController.php
  :
  class LoginController extends Controller
  {
      use AuthenticatesUsers;
      :
+     protected function loggedOut(Request $request)
+     {
+         return redirect(route('admin.index'));
+     }
      :
  }

参考:https://github.com/laravel/framework/commit/e4a00e87cfc383d9bdf8934985130801476fc242
情報提供:mpywさん(ありがとう)

- 目次 -

33
41
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
41