我正在创建一个 Web 应用程序,其中我将REST用于用户界面,而对于我使用Loopback使用的 REST API 。我的用户、acl、rollmapping、role 表都在 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 端,您需要创建一个自定义登录方法,该方法还将返回请求中的用户角色。
像下面这样的东西
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 版本并做出相应决定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句