希望将HapiJS用作我们的API服务器。我们需要细粒度的用户权限,例如"用户A可以编辑字段B" "用户C可以查看字段D"对于给定的模型/资源。
在我们开始构建之前,我一直在寻找是否已经完成了与Hapi兼容的事情。
答案 0 :(得分:4)
我刚刚阅读了一篇文章,其中使用内置范围验证了ACL权限。
以下是上述文章的链接: https://blog.andyet.com/2015/06/16/harnessing-hapi-scopes/
要快速恢复(使用上面链接中的示例),您将获得一个如下所示的用户对象:
<Complain>
可以通过为此用户提供ACL的任何内容生成范围。在这种情况下,您拥有标识为<Complain>
的资源{
"username": "han",
"scope": ["door-trash-compactor"]
}
,可以像这样进行检查:
door
范围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}']
}
}
});
,然后将对其进行验证。 Han对垃圾压缩机门的请求是有效的,他将收到door-{params.door_id}
消息。
博客文章写得很好(比本摘要好得多)并且更详细地描述了这一点 - 会推荐阅读。
答案 1 :(得分:3)
我最近一直致力于针对hapijs的ACL项目。它应该会给你一个良好的开端。 https://www.npmjs.org/package/hapi-authorization