无法使用admin on rest限制登录环回的管理员权限

时间:2017-09-02 05:51:20

标签: loopbackjs admin-on-rest

我正在创建一个Web应用程序,其中我使用 REST 作为用户界面,使用 Loopback 使用REST API。我的用户,acl,rollmapping,角色表都在mySQL中。在我的项目中,当我尝试使用环回UI时(登录并设置访问令牌之后),我可以控制访问权限。但是,当我在休息用户界面上尝试使用管理员时,我可以登录但无法控制访问权限,在管理员休息时我已经在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' })
});

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您需要使用AOR权限

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

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

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

如下所示

    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 Core。因此,请检查您的AOR版本并做出相应决定。