用户在feathers.js API中的权限

时间:2017-11-25 14:44:44

标签: javascript rest permissions feathersjs feathers-authentication

我正在尝试使用admin,superadmin等用户角色创建一些REST API。 我试图通过使用feathers-permissions模块实现这一目标,但没有工作示例和互联网。你有没有处理过这样的任务? 我现在做的是: feathers generate app然后feathers generate authentication。接下来我该怎么办?

1 个答案:

答案 0 :(得分:2)

在Feathers中实现权限和角色的秘诀在于Hooks真正提供了您所需的一切,并具有您可能想要的所有灵活性。实际上并不需要花时间寻找单独的模块并学习它的API。

将权限(通常只是字符串)存储在用户(或基于用户ID的单独permissions服务)的数组中,然后在before挂钩中检查用户是否是允许执行钩子注册的操作(这里的权限称为messages::create),如果没有,则抛出Feathers error

const { Forbidden } = require('feathers-errors');

app.service('messages').hooks({
  before: {
    create: [ context => {
      // `params.provider` is set for any external access
      // usually we don't need to check permissions for internal calls
      const isExternal = !!context.params.provider;

      if(isExternal && !context.params.user.permissions.includes('messages::create')) {
        throw new Forbidden('You are not allowed to access this');
      }
    }]
  }
});

此模式也可以使用Node的任何现有权限模块实现。有关详情,请参阅有关Access Control Strategies in FeathersJSEasy API Authorization with CASL and Feathers

的博客文章