Je travaille avec le système d'authentification Laravel 5 fourni par défaut . Après la déconnexion, un utilisateur est redirigé vers la page racine, mais j'aimerais modifier cela . le processus "login" et "registration" en définissant "$ redirectTo" dans "AuthController.php". Mais pour "logout", j'ai défini "$ redirectAfterLogout" au même endroit mais cela ne semble pas être pris en compte.
Quelqu'un pourrait-il m'expliquer où est le problème et comment le résoudre s'il vous plaît? Merci beaucoup.
Pour Laravel 5,
Ouvrez la classe AuthController
: app/Http/Controllers/Auth/AuthController.php
Ajouter la propriété ci-dessous à la classe
protected $redirectAfterLogout = 'auth/login';
vous pouvez changer auth/login
avec n'importe quelle URL.
Si vous ne fournissez pas l'attribut $redirectAfterLogout
, il utilisera la valeur par défaut qui est '/'
.
Cette logique peut être trouvée dans cette classe: \vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php
public function logout()
{
Auth::guard($this->getGuard())->logout();
return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/');
}
Ceci dit, ajoutez simplement cet attribut dans votre AuthController:
protected $redirectAfterLogout = '/afterRedirectURL';
La redirection après la déconnexion est codée en dur dans le trait AuthenticatesAndRegistersUsers
. Vous pouvez le remplacer dans votre AuthController
en ajoutant ceci:
public function getLogout()
{
$this->auth->logout();
return redirect('logout');
}
Pour Laravel 5.5 override la méthode de déconnexion dans LoginController. Dans mon cas, je redirige vers la route principale après la connexion.
/**
* Log the user out of the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->invalidate();
return redirect()->route('home');
}
J'ai le même problème dans Laravel 5.0. Ignorer une méthode fait l'affaire.
1) Allez à app/Http/Controllers/Auth/AuthController.php 2) Ajoutez une nouvelle méthode:
// Override Logout method (define custom url)
public function getLogout()
{
$this->auth->logout();
return redirect('auth/login'); // Your Custom URL
}
Ajoutez ceci à votre itinéraire
Route :: get ('logout', function () { Auth :: logout (); Return redirect ('/'); / Ajout de cette ligne. L'auth ne semble pas fonctionner. sa propre /});
Dans App\Controllers\Auth\AuthController, ajoutez les deux variables suivantes.
protected $redirectTo = '/private_dashboard';
protected $redirectAfterLogout = '/public_homepage';
Vous avez eu l'idée.