2017-02-01 7 views
1

Ich benutze Laravel 5.3 und möchte den Benutzer nach der Anmeldung an eine benutzerdefinierte URL zurückgeben.Wie kann ich nach dem Login in Laravel zu einer bestimmten URL zurückkehren?

Ich verwende eine Menge JavaScript und möchte zu einer bestimmten URL zurückkehren, die nicht die URL ist, auf die der Benutzer zugreifen möchte, nachdem er sich angemeldet hat. Die URL ist je nach Benutzeraktion unterschiedlich.

Zum Beispiel: /login?r=/come/here/after/login

ich diese URL zum Login-Bildschirm passieren kann, aber ich kann nicht einen Weg passieren sie bis zum Auth-Controller für die Umleitung finden Sie nach Anmeldung erfolgreich ist.

+0

return redirect() -> intended ('your-url'); in Ihrer Authentifizierungsfunktion oder Sie möchten nur auf URL umleiten, die nur mit Login-URL übergeben werden? – rahulsm

+0

Ich würde es einfach in der Sitzung speichern ... (Sicher, das kann zu unerwarteten Ergebnissen führen, wenn der Benutzer mehrere Tabs geöffnet hat, und löst den Login-Prozess in mehr als einer von ihnen aus. Aber wie wahrscheinlich ist das wirklich ...?) – CBroe

Antwort

1

In Ihrem Fall würde ich eine benutzerdefinierte Auth Middleware nur für die benutzerdefinierten umgeleitet Routen erstellen:

class PostLoginRedirect 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 

     $response = $next($request); 

     if (\Auth::id() && isset($request->r)) { 
      // Return the new route redirect. 
      return redirect($request->r); 
     } 

     // Return the custom one in case r? don't exists. 
     return $response; 
    } 
} 

Erklären Sie Ihre neue Middleware auf app/Http/Kernel.php

protected $routeMiddleware = [ 
    'login-redirect' => \YourNamespace\PostLoginRedirect::class 
]; 

Und in den Ihre Routen:

$this->post('login', ['middleware' => 'login-redirect', 'uses' => 'Auth\[email protected]']); 

Vielleicht müssen Sie eine kleine Änderung vornehmen, aber muss arbeiten :)

+0

Das wird nicht funktionieren. Es ist anders für jeden Link, und es ist als Abfrage String übergeben – Mike

+0

@mikemike hast du jetzt! Ich habe aktualisiert. – Troyer

+0

hmm, '\ Auth :: id()' ist immer 'null' innerhalb der Middleware. Sieht so aus, als wäre ich zu diesem Zeitpunkt nicht eingeloggt – Mike

Verwandte Themen