javascript - Feathers.js API 中的用户权限

标签 javascript rest permissions feathersjs feathers-authentication

我正在尝试创建一些具有管理员、 super 管理员等用户 Angular 色的 REST API。 我试图通过使用feathers-permissions模块来实现这一点,但没有有效的示例和互联网。你曾经处理过这样的任务吗? 我现在做的是: feathers 生成应用程序,然后feathers 生成身份验证。接下来我应该做什么?

最佳答案

在 Feathers 中实现权限和 Angular 色的秘诀是 Hooks真正提供您所需的一切以及您可能想要的所有灵 active 。实际上没有必要花时间寻找单独的模块并学习它的 API。

将权限(通常只是字符串)存储在用户的数组中(或基于用户 ID 的单独的权限服务),然后存储在before中钩子(Hook)检查是否允许用户执行钩子(Hook)注册的操作(这里的权限称为 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.js 的任何现有权限模块来实现。 feathers-permissions是一个简单的模块,可以更轻松地完成此操作。

有关更多信息,另请参阅有关 Access Control Strategies in FeathersJS 的博客文章和 Easy API Authorization with CASL and Feathers .

关于javascript - Feathers.js API 中的用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47487195/

相关文章:

javascript - 如何停止刷新页面?

javascript - 排除预加载的元素

javascript - Meteor:通用模板函数放在哪里(最佳实践)

json - Glassfish JAX-RS JSON 映射简单示例内部服务器错误 500 未生成日志

javascript - Facebook api 权限范围问题

postgresql - 在 Redshift 中创建 View 时有什么方法可以强制后期绑定(bind)吗?

javascript - 复选框 : Enable button if checkbox checked

java - Hibernate:运行查询以获取日期范围内的结果时没有结果

node.js - 注册表 REST API 最佳实践

Android中的android.permission.READ_PROFILE,它有什么作用?