0

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

4

1 回答 1

3

在 Feathers 中实现权限和角色的秘诀在于,Hooks确实提供了你所需要的一切以及你可能想要的所有灵活性。真的没有必要花时间寻找一个单独的模块并学习它的 API。

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

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.js 权限模块来实现。feathers-permissions是一个简单的模块,可以更轻松地完成此操作。

有关更多信息,请参阅有关FeathersJS 中的访问控制策略使用 CASL 和 Feathers 的轻松 API 授权的博客文章。

于 2017-11-26T05:16:25.310 回答