トップナビゲーションバーに「ログアウト」リンクがあります。ログインしている間に、クリックしてホームページに戻るとログアウトされるようにする方法を考えています。
具体的には、Laravelでどのファイルにどのような変更を加えますか?また、これをトリガーするには、現在HTMLのみが含まれているビューでどのコードを記述する必要がありますか?
1)laravelを含む認証スキャフォールドを使用している場合。これを行うには、ナビゲーションバーでこれを追加します。
<a href="{{ url('/logout') }}"> logout </a>
次に、これをweb.phpファイルに追加します
Route::get('/logout', '\App\Http\Controllers\Auth\LoginController@logout');
できたこれによりログアウトされ、ホームページにリダイレクトされます。 auth scaffoldを取得するには、コマンドラインからプロジェクトのルートディレクトリにcdして実行します
php artisan make:auth
2)これをナビゲーションバーに追加します。
<a href="{{ url('/logout') }}"> logout </a>
次に、これをweb.phpファイルに追加します
Route::get('/logout', 'YourController@logout');
次に、YourController.phpファイルにこれを追加します
public function logout () {
//logout user
auth()->logout();
// redirect to homepage
return redirect('/');
}
できた.
読む:
https://mattstauffer.co/blog/the-auth-scaffold-in-laravel-5-2
https://www.cloudways.com/blog/laravel-login-authentication/
php artisan make:auth
を実行すると、Laravel 5.5のデフォルトのapp.phpは次のようになります。
<a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
logout()
メソッドを使用します。
auth()->logout();
または:
Auth::logout();
アプリケーションからユーザーをログアウトするには、
logout
ファサードでAuth
メソッドを使用できます。これにより、ユーザーのセッションの認証情報がクリアされます。
php artisan make:auth
に似たセットアップを使用して、これに対する徹底的な答えがあります: https://stackoverflow.com/a/46022464/652519
隠されたフォームを使用するのは少し厄介ですが、既に利用可能な機能を使用するためにコントローラーを関与させる必要性を軽減します。