Comment définir laravel 5.3 déconnexion du chemin de redirection?
Il n'y a pas de solution élégante pour rediriger vers une page spécifique après la connexion dans Laravel 5.3?
La fonction appelée est du trait AuthenticatesUsers:
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/');
}
C'est une fonction par défaut de la base de laravel. J'ai donc remplacer l'ensemble de la fonction je ne peux pas modifier le noyau.
Mais n'est-il pas plus simple solution, parce qu'il se sentent comme overkill manuellement de déconnexion, de chasse et de régénérer à nouveau.
Travaillé les réponses dans un article:
https://codeneverlied.com/how-to-set-logout-redirect-path-in-laravel-5-8-and-before/
- Quels sont les changements que vous voulez faire ?
- de retour de la fonction redirect()->route('yourroute');
- J'espère que sur quelque chose de simple que je peux mettre dans mon LoginController quelque chose comme
protected $logoutRedirectPath = 'my/path/';
mais alors déconnexion méthode doit avoir étéreturn property_exists($this, 'logoutRedirectPath') ? $this->logoutRedirectPath : '/';
- Vous devriez être en mesure d'utiliser quelque chose comme cela - stackoverflow.com/questions/29797433/...
- J'espère pour cela, mais cela ne fonctionne pas en 5,3 plus. Voir la méthode qui est appelée.
- Eh bien, c'est de la merde. Je me demande pourquoi il l'a retirée :/
Vous devez vous connecter pour publier un commentaire.
C'est la façon dont je l'ai fait. Dans Auth\LoginController vous avez:
Le modifier:
Ensuite, définir un nouveau
logout()
méthode dans votre LoginController:Sûr, régulier
logout()
méthode dans ce trait de caractère n'a que 3 lignes (utilisée pour connecter les utilisateurs du système), de sorte que vous pouvez les copier sur votre méthode, mais vous devez toujours suivre le principe DRY (don't repeat yourself) et de ré-utiliser autant de code que vous pouvez.use … { … as … }
. Il ressemble un peu à de l'import/deconstucting. Savez-vous quel est le nom de cette syntaxe/modèle? Merci pour votre aide, il travaille sur le projet que je suis en train de travailler sur!Laravel > 5.7
Accepté la réponse est bien, mais vous pouvez contourner complètement les toucher de la déconnexion de la logique de simplement écraser la
loggedOut
méthode:use Illuminate\Http\Request;
Je héritera de
LoginController
et remplacer lelogout
la fonction venir à partir d'un trait de là:LoginController.php -> congé qu'il en est.
MyLoginController.php:
De sûr, vous devriez vous rappeler de mettre à jour votre Auth parcours en conséquence.
logout
remplacer dans le LoginController lui-même, je voudrais simplement garder ce qui n'est pas venu "built-in" dans mes propres fichiers séparés.Je suis en utilisant Laravel-5.2, ce que j'ai utilisé était:
Assurez-vous que vous avez importé:
Dans votre contrôleur.
protected $logoutRedirectPath = 'path';
La Auth::itinéraires méthode dans laravel 5.3 enregistre un POST itinéraire pour /déconnexion au lieu d'une route. Cela empêche d'autres applications web à partir de l'enregistrement de vos utilisateurs de votre application. Pour la mise à niveau, vous devez convertir votre déconnexion demande d'utiliser le verbe POST ou il vous suffit d'enregistrer votre propre OBTENIR l'itinéraire de l' /déconnexion URI par l'ajout de cette route vers le fichier Routes/web.php:-
et il devrait fonctionner correctement et vous redirige vers le '/' répertoire qu'elle est définie dans le LoginController.php
Cité:-
https://laravel.com/docs/5.3/upgrade
Chaque déconnexion action déclenche un événement
Events\Logout
. Vous pouvez créer un auditeur à l'écoute de cet événement et d'ajouter une certaine logique là. En savoir plus sur les auditeurs ici https://laravel.com/docs/5.3/eventsreturn redirect()->route('admin::login');
mais il n'est pas déclenché. L'événement serait au moins un peu plus propre. Aussi en utilisant une normaleheader('Location: /');
n'a pas de travail.La façon la plus simple est de remplacer déconnexion trait à
LoginController
dansApp\Http\Controllers\Auth\LoginController
comme ceEn supposant que quelqu'un consulte maintenant un jours et la version de la laravel qu'ils utilisent est de 5,7
Ajouter cette ligne dans LoginController.js
Cela suppose que vous êtes à l'aide de la sortie de la boîte module d'authentification fourni par laravel
Si vous utilisez la sortie de la boîte l'action authcontroller ajouter cette variable dans le haut, puis modifiez la chaîne de rediriger où vous le souhaitez.
La AuthenticatesUsers classe dispose d'une fonction de déconnexion qui vérifie la présence de cette variable.
Il suffit d'utiliser cette dans routes/web.php
Pour éviter la répétition de déconnexion de code et de suivre à SEC, vous pouvez
Auth::logout()
et le retour de redirection vers votre chemin, ouAccepté la réponse est bien, mais vous pouvez contourner complètement les toucher de la déconnexion de la logique de simplement écraser la loggedOut méthode:
Dans Laravel 5.8 trouver le chemin d'accès ci-dessous :
App\Http\Controllers\Auth\LoginController.php
écrire cette fonction
vous pouvez aller à
vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php
en fonction
logout
changementreturn redirect('/');
à votre adresse de route.composer update
votre changement est allé. Ne jamais modifier les fichiers dans le fournisseur de dossier.