Nodejs将角色连接到db表

时间:2014-04-22 13:31:14

标签: node.js authentication express authorization roles

我有一个用express.js编写的节点应用程序,带有用于身份验证的密码和用户的连接角色。我还有一个组表,我想连接到连接角色。有没有关于如何解决这个问题的文件。我希望connect-roles使用我的组表行来分配角色。

1 个答案:

答案 0 :(得分:3)

connect-roles没有定义任何存储机制。它只是注入会话对象中的经过身份验证的用户。存储与您在连接角色中测试的角色等效的字符串取决于您。您通常会首先对用户进行身份验证(这将为您提供用户对象及其角色),然后进行授权(连接角色的执行位置)。应该在连接角色之前使用Passport中间件(根据连接角色文档)

就我而言,我在我的用户模型中添加了一个角色集合,并负责从我的数据库中检索它。您仍然需要实现角色测试功能,并且您可以在定义它时引用用户模型角色属性。

示例:

roles.use(function (req, action) {
  if (req.isAuthenticated()){
    if (req.user.securityRoles.indexOf('admin') >= 0) return true; //admins can access all pages
    else return req.user.securityRoles.indexOf(action) >= 0;
  }
});

然后你保护这样的路线:

app.get('/offers', roles.is('offer.read'), offers.index);