多用户角色环回
Multiple users roles loopback
我正在尝试使用 Loopback 作为我的后端创建一个应用程序。我之前已经用过环回,但现在我想做一些我以前从未做过的事情。
我想要的很简单,我会有3种类型的用户,administrator,servicer和default。但是,我需要限制每种类型用户的访问控制;管理员可以请求我的所有路由,但是默认用户例如只能请求我指定的一些路由。 ACL 部分我知道怎么做,但我找不到任何解释如何使每种类型的用户成为角色并使其发挥作用的内容。
任何人都可以post这里举一个至少有两个用户和角色的例子?
第一步是将 2 个新角色 "administrator" 和 "servicer" 持久保存到您的数据库中。您可以手动执行此步骤或创建可以重复使用的脚本:
// commands/add_roles.js
let app = require('../server/server')
function createRole(name, description, done) {
app.models.Role.findOrCreate(
{where: {name: name}},
{name, description},
err => {
// TODO handle error
done && done()
}
)
}
createRole('administrator', 'Administrators have more control on the data', () => {
createRole('servicer', 'servicer description', process.exit)
})
然后,您将角色关联到用户。根据您的应用程序,随时执行下面的代码。
app.models.Role.findOne({where: {name: 'administrator'}}, (err, role) => {
// TODO handle error
app.models.RoleMapping.findOrCreate({where: {principalId: user.id}}, {
roleId: role.id,
principalType: RoleMapping.USER,
principalId: user.id
}, function (err) {
// TODO handle error
// if no errors, user has now the role administrator
})
})
您现在可以在模型的 ACL 中使用角色 "administrator" 和 "servicer"。
我正在尝试使用 Loopback 作为我的后端创建一个应用程序。我之前已经用过环回,但现在我想做一些我以前从未做过的事情。
我想要的很简单,我会有3种类型的用户,administrator,servicer和default。但是,我需要限制每种类型用户的访问控制;管理员可以请求我的所有路由,但是默认用户例如只能请求我指定的一些路由。 ACL 部分我知道怎么做,但我找不到任何解释如何使每种类型的用户成为角色并使其发挥作用的内容。
任何人都可以post这里举一个至少有两个用户和角色的例子?
第一步是将 2 个新角色 "administrator" 和 "servicer" 持久保存到您的数据库中。您可以手动执行此步骤或创建可以重复使用的脚本:
// commands/add_roles.js
let app = require('../server/server')
function createRole(name, description, done) {
app.models.Role.findOrCreate(
{where: {name: name}},
{name, description},
err => {
// TODO handle error
done && done()
}
)
}
createRole('administrator', 'Administrators have more control on the data', () => {
createRole('servicer', 'servicer description', process.exit)
})
然后,您将角色关联到用户。根据您的应用程序,随时执行下面的代码。
app.models.Role.findOne({where: {name: 'administrator'}}, (err, role) => {
// TODO handle error
app.models.RoleMapping.findOrCreate({where: {principalId: user.id}}, {
roleId: role.id,
principalType: RoleMapping.USER,
principalId: user.id
}, function (err) {
// TODO handle error
// if no errors, user has now the role administrator
})
})
您现在可以在模型的 ACL 中使用角色 "administrator" 和 "servicer"。