【问题标题】:User's permissions in feathers.js APIfeathers.js API 中的用户权限
【发布时间】:2018-05-09 06:58:22
【问题描述】:

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

【问题讨论】:

    标签: javascript rest permissions feathersjs feathers-authentication


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 2015-02-10
      相关资源
      最近更新 更多