loopbackjs - 多用户角色环回
问题描述
我正在尝试使用 Loopback 作为我的后端来制作应用程序。我之前已经使用过环回,但现在我想做一些我以前从未做过的事情。
我想要的很简单,我将拥有 3 种类型的用户,管理员、服务人员和默认用户。但是,我需要限制每种类型用户的访问控制;管理员可以请求我的所有路由,但默认用户例如只能请求我将指定的一些路由。ACL 部分我知道该怎么做,但我找不到任何解释如何使每种类型的用户成为角色并使其工作的东西。
任何人都可以在这里发布一个至少有两个用户和角色的例子吗?
解决方案
第一步是将 2 个新角色持久保存到您的数据库中,“管理员”和“服务人员”。您可以手动执行此步骤,也可以创建一个可以重复使用的脚本:
// 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 中使用角色“管理员”和“服务者”。
推荐阅读
- docker - Filebeat beats_input_raw_event,它是什么?
- sql - Spark 上的 Hive 不返回聚合或连接查询的结果
- php - Laravel中带有2个外键的搜索栏
- reactjs - 使用 withRouter 时代码覆盖率返回 0%
- java - 如何修复,未使用微调器自定义适配器中的代码检查复选框?
- php - 如何在数组中找到与另一个值相比的值
- html - 如何在div中包装输入元素
- mongodb - MongoDB 枚举一个键的所有数据类型
- php - 我的 Vue.js 代码在加载时不工作
- android - 在 NestedScrollview 中带有 HasFixedSize 的 Recyclerview wrap_content 不显示项目