【问题标题】:How do I properly test permissions using Featherjs & Postman?如何使用 Featherjs & Postman 正确测试权限?
【发布时间】:2021-05-26 00:33:53
【问题描述】:

首先,我想提一下,我对编码还很陌生,所以请原谅我可能很愚蠢的问题。

所以我正在使用 FeatherJS 开发一个应用程序,并且在我的应用程序中我想使用权限来确保某些用户在他们可以执行的操作中受到限制,即只允许管理员创建或更新用户。

为此,我使用 NPM 安装了 feathers-permission 并且我已经阅读了文档,但是在尝试测试该功能是否真的有效时我被卡住了。这是我的设置:

const checkPermissions = require('feathers-permissions');

module.exports = {
  before: {
    all: [],
    find: [ authenticate('jwt') ],
    get: [ authenticate('jwt') ],
    create: [ checkPermissions({
      roles: [ 'admin' ]
    }), authenticate('jwt') ],
    update: [ authenticate('jwt') ],
    patch: [ authenticate('jwt') ],
    remove: [ authenticate('jwt') ]
  },

所以现在当我尝试通过向我的应用程序的用户端点 (http://localhost:3030/users) 发送 POST 请求来创建用户时。您可以在下面找到我发出的 POST 请求的正文

 {
    "email": "someone@email.com",
    "password": "somerandompassword",
    "permission": ["user:*"]
}

我总是收到以下消息:

{
    "name": "Forbidden",
    "message": "You do not have the correct permissions (invalid permission entity).",
    "code": 403,
    "className": "forbidden",
    "errors": {}
}

在我发送 POST 请求之前,我对自己进行身份验证并检索一个承载令牌,我将其包含在我的 POST 消息中以识别我自己。当然,我还确保我拥有创建用户所需的访问权限。

你们中的任何人都可以帮我解决这个问题吗?我是否在后端配置中做错了什么,即我是否忘记在用户服务中添加一些代码?还是应该在我的 POST 请求中传递一些额外的参数?

任何帮助将不胜感激!

【问题讨论】:

    标签: feathersjs feathers-authentication feathers-hook


    【解决方案1】:

    如果您确实发送了正确的不记名令牌,则可能只是订单问题。具体来说,authenticate('jwt') 需要先运行以获取您要检查权限的用户:

    const checkPermissions = require('feathers-permissions');
    
    module.exports = {
      before: {
        all: [],
        find: [ authenticate('jwt') ],
        get: [ authenticate('jwt') ],
        create: [ authenticate('jwt'), checkPermissions({
          roles: [ 'admin' ]
        }) ],
        update: [ authenticate('jwt') ],
        patch: [ authenticate('jwt') ],
        remove: [ authenticate('jwt') ]
      },
    

    the beginning of the feathers-permission docs 简要提到了这一点,但我也刚刚更新了第一个示例以更清楚地说明这一点。

    【讨论】:

      【解决方案2】:

      这就像一个魅力!不敢相信我在文档中忽略了这一点。

      【讨论】:

        猜你喜欢
        • 2021-08-25
        • 1970-01-01
        • 2012-06-20
        • 2016-03-25
        • 1970-01-01
        • 2015-07-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        相关资源
        最近更新 更多