2016-01-27 131 views
1

Laravel 5.2已經出現一段時間了。是的,它具有非常好的新的認證功能。特別適合初學者。 我的問題, 如何檢查用戶是否是管理員,然後安全地重定向到管理員/儀表板正確?我知道一種方法是在數據庫中使用管理標誌,但可以顯示一些例子嗎?Laravel 5.2登錄後重定向管理頁面作爲管理員

+1

你嘗試過什麼嗎? – smartrahat

+0

嘿,我做了一些事情,但我需要有人告訴我如何做到這一點後,PHP手工make:auth命令。 –

回答

1

AuthController擴展了AuthenticatesAndRegistersUsers特徵,它具有一個名爲redirectPath的公共方法。在我來說,我將延長對AuthController這個方法,我會把我的邏輯有:

public function redirectPath() 
{ 
    if (Auth::user->myMethodToCheckIfUserHasAnAdminRoleLikeAnEmailOrSomethingLikeThat()) { 
     redirect('admin/dashboard'); 
    } 

    redirect('home'); 
} 
+0

我不能得到它的工作。 –

8

去AuthController.php並添加這個方法

其中的作用是在用戶定義的角色數據庫。

protected function authenticated($request,$user){ 
    if($user->role === 'admin'){ 
     return redirect()->intended('admin'); //redirect to admin panel 
    } 

    return redirect()->intended('/'); //redirect to standard user homepage 
} 
1

如Laravel 5.3/5.4

添加下列行來create_users_table遷移。

$table->boolean('is_admin'); 

給LoginController添加以下方法。

protected function authenticated(Request $request, $user) 
{ 
    if ($user->is_admin) { 
     return redirect('/admin/home'); 
    } 

    return redirect('/home'); 
} 

附加說明不要忘記以下行添加到RedirectIfAuthenticated中間件:如果您例如

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     // the following 3 lines 
     if (Auth::user()->is_admin) { 
      return redirect('/admin/home'); 
     } 

     return redirect('/home'); 
    } 

    return $next($request); 
} 

否則輸入yourdomain/login並以管理員身份登錄,它將被重定向到home而不是admin/home。

0

認證/ LoginController中protected $redirectTo = '/home'; 變化「/家」「/ loginin」例如,創建一個新的控制器和控制獲取用戶的信息,並檢查他是否管理員,然後將他重定向到合適的頁面

相關問題