【发布时间】:2017-07-20 10:16:55
【问题描述】:
我有两个不同的用户和管理员登录表单。我想要的是用户只能以自己的表单登录,否则应该是一个错误,对于管理表单也是如此。
我的数据库中只有一个用户和管理员表。它们只是 user_type 不同,显然是“admin”和“user”
我正在做的是,当用户尝试以管理员登录表单登录时,它会显示一条信息,上面写着“对不起,您不是该站点的管理员”。但这意味着用户仍然处于登录状态。
我想要的是当尝试以管理表单登录时,我根本不希望它访问系统。
到目前为止,这是我的代码:
public function validateLoginResort(Request $requests){
$username = $requests->username;
$password = $requests->password;
$attempt = Auth::attempt([
'email' => $requests->username,
'password' => $requests->password,
]);
if(Auth::check()){
if(Auth::user()->type_user == 'admin'){
return redirect('home');
}
else{
Auth::logout();
return redirect('login');
}
}else{
return "Invalid input";
}
}
如果用户不是管理员,我尝试使用Auth::logout,但我认为它根本不安全和正确。
我认为还有更好的方法可以做到这一点,你们能否就如何正确实现这一点提出建议?谢谢
【问题讨论】:
-
你应该在中间件中编写你的用户角色检查代码
-
你能举个例子吗?
-
您可以使用middlewares 或在
Auth::attempt之前先通过电子邮件查找用户,然后检查类型是否为“admin”,如果是这种情况,请使用attempt然后check否则重定向用户
标签: php laravel security authentication laravel-5.4