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?
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/
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>
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çadeAuth
. Cela effacera les informations d'authentification dans la session de l'utilisateur.
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.