web-dev-qa-db-fra.com

Comment changer l'URL de redirection lors de la déconnexion?

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.

13
kururin

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.

32
kartavya

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';
2
geckob

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');
}
2
lukasgeiter

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');
}
1
Farid Movsumov

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
}
0
Fawwad Shafi

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 /});

0
Mickael R

Dans App\Controllers\Auth\AuthController, ajoutez les deux variables suivantes.

protected $redirectTo = '/private_dashboard';
protected $redirectAfterLogout = '/public_homepage';

Vous avez eu l'idée.

0
anonym