こんにちは。ゆたんぽです。
今回はLaravelで「ログアウト後の遷移先」を指定のページに変更したい・・・!

という件についての備忘録がてら。です。何かの参考になれば。


● 動作環境
Laravel5.8


● 結論
自作のメソッド(コントローラー)とルートを作成し、ログアウトボタンを押下した際などに、そのメソッドが発火する。

という形で(とりあえず)いきたいと思う。

なお、 Laravel5.8にデフォルトで用意されている認証(Auth)機能も使う。

やり方

※前提として、 Laravelプロジェクトを作成済みであり、「php artisan make:auth」にてデフォルトの認証機能を使用しているものとします。

 ① メソッド(コントローラー内に)の作成。

今回はコントローラーのファイル名を「TestController.php」としています

【 TestController.php 】

class TestController extends Controller {
    public function logout(){        ★ ログアウト用のメソッドを作成
        Auth::logout(); ★  Laravelの機能の中の「Auth::logout()」を使います
        return redirect('/welcome'); ★ 指定のページにリダイレクト(これ用のルートも必要)
}

 ② ルートの作成

【 web.php 】

// ウェルカムページ用のViewがあるとして。
Route::get('/welcome', function () {
      return view('welcome'); //welcome.blade.php(View)を呼び出しますよ。というルート
});
// ログインしている場合のルート
Route::group(['middleware' => 'auth'], function(){
     
     Route::get('/logout', 'TestController@logout')->name('logout'); ★ このルートを追加
}


Route::get('/logout', 'TestController@logout')->name('logout');

という一文を「web.php」の、Authミドルウェア内に追加します。

一応、解説もしておきます。


1:「Route::get」・・・GET通信で、「'/logout'」というアクセスをした・された場合

2:「'TestController@logout'」・・・TestController.phpのlogoutメソッドを呼び出す。

3:「name('logout');」・・・この一連の処理を、例えばViewなどで「route('logout')」として呼び出せるように設定。


といった感じです。

 ③ View(テンプレート)に追加


あとは、ログアウトボタンにさっきのルートの「name()」の中身を追加していきます。

【 Viewファイル(〇〇.blade.php) 】

// ログアウト用のリンク(ボタン)を用意する
<a href="{{ route('logout') }}" > ログアウト </a>

aタグの遷移先に、先ほど作った「logout」というルートを呼び出すように設定して完了です!!


お疲れ様でした〜!

ぬこ先生

やり方さえ分かれば簡単だにゃ。

ゆたんぽ

正直、この方法が正しいのかは分からないんだけどね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です