【问题标题】:Is there a library compatible with Hapi for fine-grained ACL / User permissions?是否有与 Hapi 兼容的库以提供细粒度的 ACL/用户权限?
【发布时间】:2014-11-18 07:00:54
【问题描述】:

希望使用 HapiJS 作为我们的 API 服务器。我们需要细粒度的用户权限,例如给定模型/资源的“用户 A 可以编辑字段 B”“用户 C 可以查看字段 D”。

在我们开始构建之前,我一直在查看是否已经完成了与 Hapi 兼容的类似操作。

【问题讨论】:

  • 你找到什么了吗?
  • 不,该项目暂时搁置。将在此处发布任何发现。

标签: node.js permissions acl user-permissions hapijs


【解决方案1】:

我刚刚阅读了一篇文章,其中使用内置范围验证 ACL 权限。

这是上述文章的链接: https://blog.andyet.com/2015/06/16/harnessing-hapi-scopes/

为了快速恢复(使用上面链接中的示例),您将获得一个如下所示的用户对象:

{
    "username": "han",
    "scope": ["door-trash-compactor"]
}

范围可以由支持该用户的 ACL 的任何内容生成。在这种情况下,您拥有 ID 为 trash-compactor 的资源 door,可以像这样检查:

server.route({
    method: 'GET',
    route: '/doors/{door_id}',
    config: {
        handler: function (request, reply) {
            reply(request.params.door_id ' door is closed');
        },
        auth: {
            scope: ['door-{params.door_id}']
        }
    }
});

范围door-{params.door_id} 将被转换为door-trash-compactor,然后将对其进行验证。小韩对垃圾压实机门的请求将是有效的,他将收到door is closed 消息。

这篇博文写得很好(比这篇总结要好得多)并且描述得更详细——推荐阅读。

【讨论】:

    【解决方案2】:

    我最近一直在为 hapijs 开发一个 ACL 项目。它应该给你一个好的开始。 https://www.npmjs.org/package/hapi-authorization

    【讨论】:

    • 刚刚检查了插件,我有一个问题 - 你能否以用户可以拥有多个角色的方式实现它,这些角色不是分层的,而是在同一级别上,允许访问不同的部分应用程序(比如说,manages_users 和 manages_products)?您可能会认为如果用户对象具有 .role 属性,那么它就是一个角色;如果它有 .roles,那么你需要一个数组并检查它
    • 这个功能已经存在并且是默认的。 github.com/toymachiner62/hapi-authorization#plugin-config。如果您有任何问题,请提交 github 问题,而不是在 SO 上发帖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多