2017-10-27 1 views
5

Ich habe zwei Login-Formulare mit zwei verschiedenen Tabellen.Eine ist standardmäßig mit /login Route und die andere hat Route /myportal. Ich habe extra Login-ControllerRedirectIfAuthenticated Redirect wenn versuchen, andere Login-Formular zu öffnen

protected $redirectTo = '/student-home'; 
    public function showLoginForm() 
    { 
     return view('my_portal'); 
    } 

    public function logout(Request $request) 
    { 
     $this->guard()->logout(); 
     $request->session()->flush(); 
     $request->session()->regenerate(); 
     return redirect('/my_portal'); 
    } 

    protected function guard() 
    { 
     return Auth::guard('web_student'); 
    } 

    public function username() 
    { 
     return 'username'; 
    } 

Dieser Login funktioniert gut. Aber, ich habe Probleme mit RedirectIfAuthenticated

public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->check()) { 
      return redirect('/home'); 
     } 

     else if(Auth::guard('web_student')->check()) 
     { 
      return redirect('student-home'); 
     } 
     return $next($request); 
    } 

Nun, wenn der Benutzer bereits angemeldet ist, wird es zu /student-home weitergeleitet nur, wenn die Route ist /login und nicht /my-portal. d. h. nur wenn ich auf das normale Formular klicke, nicht dieses zusätzliche Formular, das ich erstellt habe. Wie kann ich zu student-home umleiten, wenn Benutzer auf /my-portal geklickt hat?

Antwort

4

Sie können einen Controller auf die Route my-Portal verbinden mit:

Route::get('test', '[email protected]') ; 

Dann in der Controller-Funktion können Sie überprüfen, ob der Benutzer bereits

Hoffentlich

public function example() { 
    if(Auth::check()) { 
     //This condition will run if the user is logged in ! 
     return redirect('student-home'); 
    } 
    //Do whatever you want if user is not logged in! 
} 
angemeldet, Das beantwortet deine Frage!

2

Bitte ändern Sie Ihre RedirectIfAuthenticated Middleware wie diese

public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->check()) { 

      if(guard == 'web_student') { 
       return redirect('student-home'); 
      }else return redirect('/home'); 
     } 
    return $next($request); 
} 

Das Problem mit Ihrem Code ist, dass das folgende Segment wird immer wahr, wenn ein Benutzer angemeldet ist. Sie haben zu prüfen, ob eine bestimmte guard ist Stellen Sie innerhalb dieser if Anweisung ein, wenn Sie sie entsprechend umleiten möchten.

Verwandte Themen