多用户角色环回

时间:2018-08-05 18:10:22

标签: loopbackjs

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

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

任何人都可以在此处发布至少具有两个用户和角色的示例吗?

1 个答案:

答案 0 :(得分:2)

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