web-dev-qa-db-fra.com

Déconnexion via un lien dans Laravel

J'ai un lien "Déconnexion" dans la barre de navigation supérieure. Je me demande comment je peux faire en sorte que pendant que je suis connecté, il me déconnecte lorsque je clique dessus et me renvoie à la page d'accueil.

Pour être précis, quels changements dois-je apporter aux fichiers dans Laravel? De plus, quel code dois-je écrire dans la vue, qui ne contient actuellement que du HTML, pour déclencher cela?

3
Ben Kao

1) Si vous utilisez l’échafaudage d’authentification que contient Laravel. Vous pouvez le faire, ajoutez ceci dans votre barre de navigation:

<a href="{{ url('/logout') }}"> logout </a>

puis ajoutez ceci à votre fichier web.php 

Route::get('/logout', '\App\Http\Controllers\Auth\LoginController@logout');

Terminé. Cela vous déconnectera et redirigera vers la page d'accueil. Pour obtenir l'échafaudage d'authentification, à partir de la ligne de commande, cd dans le répertoire racine de votre projet et exécutez 

php artisan make:auth 

2) ajoutez ceci à votre barre de navigation:

<a href="{{ url('/logout') }}"> logout </a>

puis ajoutez ceci dans votre fichier web.php

Route::get('/logout', 'YourController@logout');

puis dans le fichier YourController.php, ajoutez ceci

public function logout () {
    //logout user
    auth()->logout();
    // redirect to homepage
    return redirect('/');
}

Terminé.

Lis: 

https://mattstauffer.co/blog/the-auth-scaffold-in-laravel-5-2
https://www.cloudways.com/blog/laravel-login-authentication/
9
Dammy joel

Lorsque vous exécutez php artisan make:auth, le fichier app.php par défaut dans Laravel 5.5 se présente comme suit:

<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>
6
Lucas Bustamante

Utilisez la méthode logout() :

auth()->logout();

Ou:

Auth::logout();

Pour déconnecter les utilisateurs de votre application, vous pouvez utiliser la méthode logout sur la façade Auth. Cela effacera les informations d'authentification dans la session de l'utilisateur.

4
Alexey Mezenin

Il existe une réponse complète à cela en utilisant une configuration similaire à php artisan make:auth ici: https://stackoverflow.com/a/46022464/652519

Cela évite d'avoir à impliquer les contrôleurs pour qu'ils utilisent les fonctionnalités déjà disponibles, même si c'est un peu gênant d'utiliser une forme cachée.

0
Michael