Laravel@Rocky Linux ログアウト機能を作ってみる

Laravel ui vue -auth では未実装のログアウト機能を既存のhome.blade.phpをカスタマイズした簡単なものですが作ってみました。

今回使用したファイルは

welcome.blade.php
home.blade.php
web.php
ExceptionHandler.php です。

まずwelcome.blade.php home.blade.php をコピー、バックアップを取ってから welcome.blade.php の BODY部分の不要な要素を削除します。

$ cp ./resources/views/welcome.blade.php{,.org}
$ cp ./resources/views/home.blade.php{,.org}

$ vi ./resources/views/welcome.blade.php

次にhome.blade.php のログインチェック部分にログアウトフォームを追加します。今回はルックフィールをテキスト表示にそろえるためリンクを aタグからGETで送信するようにしました。

$ vi ./resources/views/home.blade.php

{{ __('You are logged in!') }}<br>
<div> <a href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">Logout</a> <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;"> @csrf </form> </div>

続いて web.php に ‘logout’ リンクをGET送信したときのルートを記述します。

$ vi ./routes/web.php
Route::get('/', function () { return view('welcome'); }); Auth::routes(); Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); Route::get('logout', 'Auth\LoginController@logout')->name('logout'); ← (追記

最後にHandler.php に例外時に強制ログアウトするコードを追記すると良い感じになりました。

$ vi ./app/Exceptions/Handler.php
/** * Register the exception handling callbacks for the application. */ public function register(): void { $this->reportable(function (Throwable $e) { // }); }
/* ↓↓↓↓(以下追記)↓↓↓↓ */ public function render($request, Throwable $exception) { if($exception instanceof TokenMismatchException) { // ログアウトリクエスト時は、強制的にログアウト if($request->is('logout')) { return redirect('login'); } } return parent::render($request, $exception); } /* ↑↑↑↑↑(追記ここまで)↑↑↑↑↑↑ */ }

.

ログアウトアンカーをクリックすると

.

welcome.blade.php トップに戻りました。

.

参考URL: [Laravel] ログアウトリンクを作る

Laravel ログアウトできない問題

Laravel – ログアウト

Laravel の Auth で ログイン後 / ログアウト後 / ログイン済 の遷移先を変更する

同じカテゴリーの記事

コメントを残す

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