我正在创建一个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' })
});
有人可以帮我解决这个问题吗?
答案 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版本并做出相应决定。