2017-10-28 127 views
0

我有2種類型的登錄名,Admin和Customer。 如果想用管理員信用登錄到客戶儀表板,它會贏得登錄,這是我想要的,但是如果我使用客戶信用登錄會將我重定向到客戶儀表板,但是如果我想在同一時間打開管理儀表板,重定向我到管理儀表盤,不檢查它必須是1不是2本規範的角色ID:Laravel:如何重定向到頁面取決於角色

管理:控制面板\的LoginController

public function postLogin(request $request){ 
    $auth=auth::guard('web')->attempt(['email'=>$request->email,'password'=>$request->password,'active'=>1,'role_id'=>1]); 
    if($auth) 
    { 
     return redirect()->route('dashboard'); 
    } 
    return view('Dashboard.login'); 
} 


public function getLogin(){ 
    if(Auth::guard('web')->check()){ 
     return redirect()->route('dashboard'); 
    } 
    return view('Dashboard.login'); 
} 

客戶:客戶\的LoginController

public function postLogin(request $request){ 
    $auth=auth::guard('web')->attempt(['email'=>$request->email,'password'=>$request->password,'active'=>1,'role_id'=>2]); 
    if($auth) 
    { 
     return redirect()->route('customer'); 
    } 
    return redirect()->route('/'); 
} 

public function getLogin(){ 
    if(Auth::guard('web')->check()){ 
     return redirect()->route('customer'); 
    } 
    return view('index.mainpage.home'); 
} 
+0

這屬於中間件,而不是控制器。 –

+0

那麼你能幫我修改嗎? –

+0

@GhadahSalman:請按照此[鏈接](https://stackoverflow.com/questions/40048732/laravel-5-3-login-redirect-to-different-pages-for-multiple-users) –

回答

0

在我看來,應該驗證已完成後才進行處理,然後應用程序決定將用戶重定向根據其作用:)

這只是一個檢查,而不是每個請求檢查>>糾正路線這是中間件工作。

有一個名爲authenticated這個protected function authenticated(Request $request, $user)簽名,你可以重寫它的LoginControllerAuthenticatesUsers性狀內的方法。您可以檢查用戶的角色,然後將其重定向到正確的位置。

作爲一個例子:

/** 
* The user has been authenticated. 
* 
* @param \Illuminate\Http\Request $request 
* @param mixed $user 
* @return mixed 
*/ 
protected function authenticated(Request $request, $user) 
{ 
    if ($user->hasRole('admin')) { 
     return redirect('/admin'); 
    } else { 
     return redirect('/'); 
    } 
} 

UPDATE

我們有兩個場景(據我發現的):

方案1:用戶(具有任何類型)的登錄到該網站,我們希望將其重定向到相應的面板(例如,如果他有管理員角色,則將其重定向到管理員面板)。

方案2:如果普通用戶去/admin我們要阻止他進入管理面板和重定向回主頁或面對他403 Forbidden錯誤頁面。

在第一種情況下,您可以通過檢查其角色(我已經在上面解釋過)從LoginController重定向用戶。

第二,你需要一個用於管理路由組的中間件來檢查用戶的角色,如果它不是管理員用戶,那麼重定向他或中止它。

+0

不明白我在新的laravel :( –

+0

@GhadahSalman您是否在App \ Http \ Controllers \ Auth中發現了'LoginController'? – YaserKH

+0

是的,它只有這個功能:protected $ redirectTo ='/ home'; /** * 創建一個新的控制器實例。 * * @返回空隙 */ 公共函數__construct() { $這 - >中間件( '客戶',[ '除了' - > '註銷']); } } –

0
在AdminController

剛剛添加

$這個 - >中間件( 'AUTH:管理員');

相關問題