Laravel |根据用户角色限制登录
Laravel | Restrict login based on user role
所以在我们的 Laravel 应用程序中有 2 个角色(互联网客户端和管理员)。下面是数据库模式
users(id, username, password)
roles(id, name)
role_user (user_id, role_id)
我们希望允许 www.site.com/login 路由仅记录具有角色 'Client'.
的用户
请注意,我们不想在用户登录后检查角色并强制注销。
谢谢
好的,我们找到的快速解决方案是覆盖 LoginController 中的 login 函数,以检查用户名是否具有管理员角色,然后登录失败
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);
[...]
}
所以在我们的 Laravel 应用程序中有 2 个角色(互联网客户端和管理员)。下面是数据库模式
users(id, username, password)
roles(id, name)
role_user (user_id, role_id)
我们希望允许 www.site.com/login 路由仅记录具有角色 'Client'.
的用户请注意,我们不想在用户登录后检查角色并强制注销。
谢谢
好的,我们找到的快速解决方案是覆盖 LoginController 中的 login 函数,以检查用户名是否具有管理员角色,然后登录失败
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);
[...]
}