2017-10-27 7 views
5

2つの異なるテーブルを持つ2つのログインフォームがあります.1つはデフォルトで/loginルートで、もう1つはルート/myportalです。私は余分なlogincontrollerを持っていますRedirectIf他のログインフォームを開こうとすると認証されたリダイレクト

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'; 
    } 

このログインはうまくいきます。ユーザーがすでにログインしている場合しかし、私は今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); 
    } 

に問題が生じています、ルートが/loginない/my-portal場合にのみ/student-homeにリダイレクトされます。つまり、私が作成したこの特別なフォームではなく、通常のフォームをクリックした場合のみです。ユーザーが/my-portalをクリックした場合、どうすればstudent-homeにリダイレクトできますか?

答えて

4

あなたはと私のポータルルートにコントローラを接続することができます、ユーザーがすでにうまくいけば

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! 
} 

でログインしている場合は、コントローラの機能では、あなたがチェックすることができ

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

これはあなたの質問に答える!

2

この

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); 
} 

のようなあなたのコードの問題は、ユーザーがログインしている場合に、次のセグメントは常に真なりで、あなたのRedirectIfAuthenticatedミドルウェアを変更してください。あなたは、特定のguardであるか否かをチェックする必要がありこれを適切にリダイレクトしたい場合は、if文内に設定してください。

if (Auth::guard($guard)->check()) { return redirect('/home'); }