※ Laravel 5.6.27 以降の人は「loggedOut 関数を使う方法」まで読み飛ばして下さい。
app\Http\Controllers\Auth\LoginController.php は
ほとんど隠蔽されていてどこを修正して良いかわからない。
logout時の遷移先も AuthenticatesUsers で定義されてしまっているので
LoginController を以下の様に修正して無理やり遷移先を変更する。
AuthenticatesUsers.logout を別名 performLogout に変更
// use AuthenticatesUsers;
use AuthenticatesUsers {
logout as performLogout;
}
これで、AuthenticatesUsers の logout は performLogout として呼び出すことになる。
logout を作成する。
public function logout(Request $request)
{
$this->performLogout($request);
return redirect()->route('admin.index'); // ここを好きな遷移先に変更する。
}
これで外部からは logout が呼ばれ、内部で performLogout を呼び出すことになる。
使用する Request を明示する
use Illuminate\Http\Request;
定義されていないと思うので、先頭で logout に渡される Resuest を定義しておく。
loggedOut 関数を使う方法
Laravel 5.6.27以降では、認証スキャフォールドの登録および認証されたメソッドに基づいて
loggedOut関数が追加されている。
なので logout 関数を無理やり置き換えなくても
loggedOut関数を追加すればログアウト後の遷移先が変更できる。
loggedOut関数を記述しなければ、そのまま / に遷移する。
:
class LoginController extends Controller
{
use AuthenticatesUsers;
:
+ protected function loggedOut(Request $request)
+ {
+ return redirect(route('admin.index'));
+ }
:
}
参考:https://github.com/laravel/framework/commit/e4a00e87cfc383d9bdf8934985130801476fc242
情報提供:mpywさん(ありがとう)