生成器-angular-fullstack——如何根据角色检查特定路由的用户权限



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

然后检查登录的用户是否具有协作者角色,然后他/她才能删除或更新'api/things'。然而,如果他们想要获取或创建新的东西,他们可以用任何其他角色来做。

我已经尝试了各种不同的方法,但没有运气。

在您的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');
    }
  });
}

相关内容

  • 没有找到相关文章

最新更新