generator-angular-fullstack - 如何根据某些路由的角色检查用户权限

时间:2016-10-13 21:26:31

标签: angularjs node.js mean-stack angular-fullstack

我正在使用generator-angular-fullstack,我希望能够添加一个类型的新角色:'collaborator'。

然后在他/她可以删除或更新'api / things'之前检查登录用户是否具有协作者角色。但是,如果他们想要获取或创建新事物,他们就可以与任何其他角色一起完成。

我一直在尝试各种不同的方式,但没有运气。

1 个答案:

答案 0 :(得分:2)

在您的server / api / someAPI / index.js文件中根据需要添加auth.hasRole('collaborator'),如下所示:

router.get('/', controller.index);
router.post('/', controller.create);
router.put('/:id', auth.hasRole('collaborator'), controller.update);
router.delete('/:id', auth.hasRole('collaborator'), controller.destroy);

然后在你的server / auth / auth.service.js中确保你有这样的东西:

function hasRole(roleRequired) {

  if (!roleRequired) {
    throw new Error('Required role needs to be set');
  }

  return (0, _composableMiddleware2.default)().use(isAuthenticated()).use(function meetsRequirements(req, res, next) {
    if (_environment2.default.userRoles.indexOf(req.user.role) <= _environment2.default.userRoles.indexOf(roleRequired)) {
      next();
    } else {
      res.status(403).send('Forbidden');
    }
  });
}