2016-12-30 11 views
2

Ich habe ein Problem mit Laravel 5.3 Authentifizierung. Ich möchte Benutzer nach der Anmeldung umleiten. Wenn ich alle Benutzer auf dieselbe Route umleiten möchte, weiß ich, dass ich das Attribut protected $redirectTo = 'mypath' ändern kann, aber ich möchte Benutzer basierend auf ihrem Typ umleiten, sodass ich benutzerdefinierte Logik benötige. In der Dokumentation sagt es, ich sollteLaravel 5.3 Redirect nach Authentifizierung

machen, aber meine Funktion wird immer ignoriert. In den Dokumenten heißt es, meine Funktion sollte das Attribut $redirectTo überschreiben, aber selbst wenn ich es lösche, geht es immer noch zur Standardroute ("/home"). Wenn ich den Attributwert ändere, leitet er mich um, um den Pfad zu korrigieren, aber meine Funktion wird immer noch ignoriert.

https://laravel.com/docs/5.3/authentication#included-authenticating

Mein Login Der Controller sieht wie folgt aus:

namespace App\Http\Controllers\Auth; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 
use Illuminate\Support\Facades\Auth; 

class LoginController extends Controller 
{ 

    use AuthenticatesUsers; 

    //protected $redirectTo = '/'; 
    protected function redirectTo() 
    { 
     return redirect('admin/home'); 
    } 

    public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'logout']); 
    } 

} 

EDIT: Wenn ich meine Funktion nennen authenticated() statt redirectTo(), es wie geplant funktioniert.

protected function redirectTo() 
{ 
     return redirect('admin/home'); 
} 
+0

Wo überschreiben Sie die Variable $ redirectTo? Ich sehe nirgends in Ihrem Code einen Wert, der $ $ this-> redirectTo' zugewiesen wurde. – Dragos

+0

Haben Sie versucht, eine Zeichenfolge anstelle eines Redirect-Objekts zurückzugeben? – yivi

+0

@yivi Ich habe, versuchte ich zurück "admin/home" – Grof

Antwort

1

Laravel verwendet RedirectUsers::redirectPath(), um den Umleitungspfad zu erhalten.

Es prüft nur eine Eigenschaft redirectTo.

Wenn Sie benutzerdefinierte Logik anwenden möchten - überschreiben Sie einfach redirectPath() Methode in Ihrem Controller.

namespace App\Http\Controllers\Auth; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 
use Illuminate\Support\Facades\Auth; 

class LoginController extends Controller 
{ 

    use AuthenticatesUsers; 

    //protected $redirectTo = '/'; 
    public function redirectPath() 
    { 
     // ... 
     // custom logic here 
     // ... 

     return '/my/custom/url/here'; 
    } 

    public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'logout']); 
    } 

} 

Der gleiche Ansatz wird für RegisterController und ResetPasswordController arbeiten.

+0

bedeutet Vielen Dank für Ihre Hilfe :) – Grof

Verwandte Themen