首页 > 解决方案 > 多用户角色环回

问题描述

我正在尝试使用 Loopback 作为我的后端来制作应用程序。我之前已经使用过环回,但现在我想做一些我以前从未做过的事情。

我想要的很简单,我将拥有 3 种类型的用户,管理员、服务人员和默认用户。但是,我需要限制每种类型用户的访问控制;管理员可以请求我的所有路由,但默认用户例如只能请求我将指定的一些路由。ACL 部分我知道该怎么做,但我找不到任何解释如何使每种类型的用户成为角色并使其工作的东西。

任何人都可以在这里发布一个至少有两个用户和角色的例子吗?

标签: loopbackjs

解决方案


第一步是将 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 中使用角色“管理员”和“服务者”。


推荐阅读