Laravel 5.2已经出现一段时间了。是的,它有新的auth功能非常好。特别适合初学者。 我的问题, 如何检查用户是否为admin,然后安全地重定向到admin / dashboard?我知道一种方法是在数据库中使用admin标志,但是你们中的任何人都可以展示一些例子吗?
答案 0 :(得分:9)
转到AuthController.php并添加此方法
其中role是数据库中定义的用户角色。
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 :(得分:1)
AuthController扩展了AuthenticatesAndRegistersUsers特征,该特征具有名为redirectPath的公共方法。在我的情况下,我会在AuthController上扩展该方法,并将我的逻辑放在那里:
public function redirectPath()
{
if (Auth::user->myMethodToCheckIfUserHasAnAdminRoleLikeAnEmailOrSomethingLikeThat()) {
redirect('admin/dashboard');
}
redirect('home');
}
答案 2 :(得分: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。
答案 3 :(得分:0)
有protected $redirectTo = '/home';
例如,将'/ home'更改为'/ loginin',并创建一个新的控制器,并在控制器中获取用户的信息,并检查他是否是管理员或不,然后将他重定向到正确的页面