web-dev-qa-db-ja.com

Laravelのリンクを介してログアウトする

トップナビゲーションバーに「ログアウト」リンクがあります。ログインしている間に、クリックしてホームページに戻るとログアウトされるようにする方法を考えています。

具体的には、Laravelでどのファイルにどのような変更を加えますか?また、これをトリガーするには、現在HTMLのみが含まれているビューでどのコードを記述する必要がありますか?

11
Ben Kao

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/
17
Dammy joel

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>
21

logout() メソッドを使用します。

auth()->logout();

または:

Auth::logout();

アプリケーションからユーザーをログアウトするには、logoutファサードでAuthメソッドを使用できます。これにより、ユーザーのセッションの認証情報がクリアされます。

4
Alexey Mezenin

php artisan make:authに似たセットアップを使用して、これに対する徹底的な答えがあります: https://stackoverflow.com/a/46022464/652519

隠されたフォームを使用するのは少し厄介ですが、既に利用可能な機能を使用するためにコントローラーを関与させる必要性を軽減します。

1
Michael