11

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

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

4

2 回答 2

4

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

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

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

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

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

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消息。

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

于 2015-12-17T15:44:16.247 回答
3

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

于 2014-12-04T20:24:04.247 回答