express项目,做角色控制

1、使用框架:nodejs的express框架
2、目前需求:系统中有三种不同的角色,不同的角色可访问的接口是不一样的
3、初步方法:在每一个接口上对得到的角色进行验证,成功可访问,失败则拒绝。
4、存在问题:当接口很多或是增加角色时,几乎是要重写一遍。
要怎么实现才能较少的改动代码和较好的适应性那?

阅读 3.3k
2 个回答

https://github.com/stormpath/...

https://github.com/jaredhanso...

这些都是现成的授权、认证的中间件。

实在不行自己写一个权限表,加个中间件,先校验用户角色是否匹配,不匹配直接重定向跳转,匹配就next();

举个非常简单的例子

const = roleMap = {
  a: ['/api/']
};
app.use(function (req, res, next) {
    if (roleMap[req.session.role].findIndex(req.path)>=0) {
        next();
    } else {
       res.redirect("/auth");
    }
});

把用户拥有的权限储存到数据库,登陆时获取。
储存
api/a
api/b

访问接口的时候通过url判断用户权限中是否有。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题