1
votes

Redirection vers la page d'origine qui a demandé la connexion dans Laravel

J'ai cherché partout, aucune des réponses ne correspondait à mes besoins.

J'ai une application Laravel, avec différentes pages qui nécessitent que l'utilisateur soit connecté.

La redirection normale dans Laravel après la connexion est vers la page d'accueil.

Comment puis-je rediriger vers la page d'origine qui a demandé la connexion?

Par exemple:

Un utilisateur tente d'accéder à example.com/page/1 qui est réservé aux utilisateurs authentifiés. Il est redirigé vers la page de connexion, soumet le formulaire puis redirige vers la page d'accueil. Comment puis-je le rediriger vers example.com/page/1 ou vers n'importe quelle page d'où il vient?


0 commentaires

3 Réponses :


0
votes

dans votre LoginController :

protected function authenticated(Request $request, $user) {
       return redirect()->back();
}


0 commentaires

2
votes

Vous pourriez potentiellement vous connecter à la méthode intention () de Laravel. En général, il s’agit d’une route surveillée à laquelle un utilisateur a tenté d’accéder avant d’être redirigé vers la page de connexion, mais vous pouvez la définir manuellement sur ce que vous voulez.

Dans votre LoginController ajoutez ce qui suit:

public function showLoginForm()
{
    if (!session()->has('url.intended')) {
        redirect()->setIntendedUrl(session()->previousUrl());
    }

    return view('auth.login');
}

Cela vérifiera si l'URL prévue est définie, si ce n'est pas le cas, elle la définira sur l'url précédente.


1 commentaires

C'est la solution que j'ai utilisée qui fonctionne comme je le souhaitais. Merci.



3
votes

Vous pouvez utiliser la méthode prévue à cet effet, à partir de la documentation:

La méthode prévue sur le redirecteur redirigera l'utilisateur vers le URL à laquelle ils tentaient d'accéder avant d'être interceptés par le middleware d'authentification. Un URI de secours peut être donné à cette méthode au cas où la destination prévue n'est pas disponible.

Dans votre contrôleur de connexion, ajoutez le code ci-dessous:

public function authenticate(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (Auth::attempt($credentials)) {
        // Authentication passed...
        return redirect()->intended('dashboard');
    }
}


0 commentaires