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?
3 Réponses :
dans votre LoginController :
protected function authenticated(Request $request, $user) { return redirect()->back(); }
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.
C'est la solution que j'ai utilisée qui fonctionne comme je le souhaitais. Merci.
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'); } }