无法使用休息时的管理员将登录的管理员权限限制为环回

Unable to restrict admin permission on login to loopback using admin on rest

我正在创建一个 Web 应用程序,我在其中使用 REST 作为用户界面,对于 REST API 我使用 Loopback.我的用户、acl、rollmapping、角色 table 在 mySQL 中。在我的项目中,当我尝试使用环回 UI(登录并设置访问令牌后)时,我能够控制访问权限。但是当我在休息时尝试使用管理员 UI 我可以登录但无法控制访问权限,在休息时我已经提供了所有 url 和 authClient.jsx 中的所有内容。我的 authClient.jsx 文件:

const request = new Request('http://localhost:3004/api/Users/login', {
    method: 'POST',
    body: JSON.stringify({ email, password }),
    headers: new Headers({ 'Content-Type': 'application/json' })
});

谁能帮我解决这个问题?

您需要使用 AOR 权限

https://github.com/marmelab/aor-permissions

这将处理所有身份验证和基于角色的访问。

在 API 方面,您需要创建一个自定义登录方法,该方法还将 return 请求中的用户角色。

如下所示

    User.customLogin = (credentials, cb) => {
        User.login(credentials, 'User', function(err, token) {
            if (err) {
                console.error(err)
                return cb(err)
            }
            app.models.RoleMapping.findOne({where: {principalId: token.userId}, include: {relation: 'role'}}, function(err, rolemap) {
                if (err) {
                    console.error(err)
                    return cb(err)
                }
                token.role = rolemap.role().name
                return cb(null, token)
            })
        })
    }

登录时将用户角色保存在 localStorage 中,然后您可以使用 AOR 权限向每个用户显示基于角色的视图。

编辑: 根据以下 AOR 明星贡献者@gildas 的说法。 AOR 权限将被弃用,所有功能都将移至 AOR 核心。因此,请检查您的 AOR 版本并做出相应决定。