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