Laravel |根据用户角色限制登录

时间:2020-08-27 11:46:00

标签: laravel authentication eloquent middleware

因此,在我们的Laravel应用程序中,有2个角色(互联网客户端和管理员)。下面是数据库架构

users(id, username, password)
roles(id, name)
role_user (user_id, role_id)

我们希望允许 www.site.com/login 路由仅记录角色为“客户端”的用户。

请注意,一旦用户登录并强制注销,我们就不想检查角色。

谢谢

1 个答案:

答案 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);

        [...]

    }
相关问题