Umleiten, wenn authentifizierte Logik in Laravel die integrierte auth?

Diese Frage wurde vorher gefragt, und ich glaube, dass mein code korrekt zu sein, aber ich bin immer seltsam Verhalten.

Muss ich leiten den Benutzer auf verschiedenen Routen nach dem login je nachdem, welche Datenbank Werte. Ich dachte, dass, um dies zu tun, ich hatte einfach meine Logik in der handle Methode der app/Http/Middleware/RedirectIfAuthenticated.php. Meine Methode derzeit sieht so aus:

public function handle($request, Closure $next)
{

    if ($this->auth->check()) {
        if($this->auth->user()->sign_up_complete == 1){
            return redirect('/');
        } else {
            if($this->auth->user()->step_one_complete == 0){
                return redirect('/register/step-1');
            } elseif($this->auth->user()->step_two_complete == 0){
                return redirect('/register/step-2');
            } else {
                return redirect('/');
            }
        }
    }

    return $next($request);
}

Funktioniert dies nicht, und nach der Anmeldung wird der Benutzer umgeleitet, um /home. Ich habe versucht, indem Sie dd($this->auth->user()) innerhalb der $this->auth->check() Zustand, aber es wird nie laufen. Wenn ich platzieren Sie es außerhalb der check, dann ist es auf jeder Anfrage. Es sieht aus wie $this->auth->check() wird nie ausgeführt.

Meine Frage: Wenn nicht hier, wo sollte dieser Logik gehen?

Habe ich entfernt protected $redirectTo = '/account'; von der AuthController.php controller zu.

  • Und wo ist die check() Funktion
  • RedirectIfAuthenticated scheint ein guest middleware. Auch in Illuminate\Foundation\Auth\RedirectUsers wenn Sie nicht die $redirectTo werden umgeleitet /home. Aber es spielt keine Rolle in diesem Fall. Haben Sie versucht, die Authenticate middleware statt? Bewegen Sie Ihre Logik, nach der $this->auth->guest() überprüfen, was du geschrieben hast. Diese middleware wird ausgeführt, jedes mal, wenn der Benutzer authentifiziert werden müssen. So der basic-check leitet Sie, wenn nicht authentifiziert. Wenn es ist, wird es weiterhin zu Ihrer Abreise.
  • Ich bin mir nicht sicher, ob ich Folgen. Das scheint für etwas ganz anderes?
  • Es scheint. Wenn ich mit guest middleware, es laufen RedirectIfAuthenticated. Aber auth middleware nicht ausgeführt RedirectIfAuthenticated, läuft aber Authenticate. Weil Sie überprüfen wollen, die den Benutzer nach dem login, wenn er alle Schritte abgeschlossen, alle geschützten Seite mit auth laufen Authenticate middleware, so führen Sie Ihren check. guest middleware verwendet, wenn Sie umleiten möchten Ihre Nutzer von Seiten, welche nicht benötigt werden. Zum Beispiel, wenn der Benutzer angemeldet sind, wollen Sie nicht zeigen loginform. Hier finden Sie guest middleware, was rufen RedirectIfAuthenticated und umleiten zu Hause, wenn er bereits angemeldet ist.
  • haben Sie den code schreiben, für middleware im controller?
  • Haben Sie eine passende Antwort? Bitte akzeptieren Sie es

InformationsquelleAutor Mike | 2015-10-26
Schreibe einen Kommentar