因此,在我们的Laravel应用程序中,有2个角色(互联网客户端和管理员)。下面是数据库架构
users(id, username, password)
roles(id, name)
role_user (user_id, role_id)
我们希望允许 www.site.com/login 路由仅记录角色为“客户端”的用户。
请注意,一旦用户登录并强制注销,我们就不想检查角色。
谢谢
答案 0 :(得分:0)
好的快速解决方案是覆盖 LoginController 中的登录功能,以检查用户名是否具有管理员角色,然后使登录失败
public function login(Request $request)
{
$unAuthorizedRoles = ['ADMIN'];
$exist = User::where('username', $request->username)->whereHas('roles', static function ($query) use ($unAuthorizedRoles) {
return $query->whereIn('name', $unAuthorizedRoles);
})->exists();
if ($exist)
return $this->sendFailedLoginResponse($request);
[...]
}