2016-01-27 95 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”例如,创建一个新的控制器和控制获取用户的信息,并检查他是否管理员,然后将他重定向到合适的页面

相关问题