无法使用休息时的管理员将登录的管理员权限限制为环回
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 版本并做出相应决定。
我正在创建一个 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 版本并做出相应决定。