2017-10-27 20 views
5

Tôi có hai biểu mẫu đăng nhập với hai bảng khác nhau.Một là mặc định với /login tuyến đường và đường khác có tuyến đường /myportal. Tôi có thêm logincontrollerChuyển hướngNếu chuyển hướng được xác thực nếu cố gắng mở biểu mẫu đăng nhập khác

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

Thông tin đăng nhập này hoạt động tốt. Nhưng, tôi đang gặp vấn đề với 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); 
    } 

Bây giờ, nếu người dùng đã đăng nhập, nó được chuyển hướng đến /student-home chỉ khi tuyến đường là /login và không /my-portal. tức là chỉ khi tôi nhấp vào biểu mẫu thông thường, không phải biểu mẫu bổ sung này mà tôi đã tạo. Làm thế nào tôi có thể chuyển hướng đến student-home nếu người dùng nhấp vào /my-portal?

Trả lời

4

Bạn có thể kết nối một bộ điều khiển để các tuyến đường my-cổng thông tin với:

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

Sau đó, trong chức năng điều khiển, bạn có thể kiểm tra nếu người dùng đã đăng nhập bằng

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

Hy vọng rằng, điều này trả lời câu hỏi của bạn!

2

Vui lòng thay đổi RedirectIfAuthenticated middleware của bạn như

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

Vấn đề này với mã của bạn được rằng phân đoạn sau sẽ luôn luôn đúng nếu người dùng đang đăng nhập. Bạn cần phải kiểm tra xem có hay không cụ thể guard là đặt trong câu lệnh if này nếu bạn muốn chuyển hướng chúng cho phù hợp.

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

Các vấn đề liên quan