首页
学习
活动
专区
圈层
工具
发布

ACL粒度
EN

Stack Overflow用户
提问于 2019-01-20 07:32:25
回答 2查看 220关注 0票数 1

我正在尝试为我的nodejs应用程序实现ACL。假设我有以下端点:

代码语言:javascript
复制
/api/user
/api/picture 

图片属于用户。

ACL能够根据userId允许/拒绝对端点的访问。如果一个请求到达/api/user,ACL就很容易知道某个用户是否可以访问它自己的数据:如果我是userId=23,并且我执行了一个GET on /api/ userId /23,那么在被请求的资源和用于检查的数据之间有一个直接的关系。

现在,如果请求带有pictureId的/api/picture,则ACL不知道用户和图片之间的关系,例如/api/picture/60;ACL不知道pictureId=60是否属于userId=23 (在上面的示例中使用)。

您知道nodejs有没有支持这种访问控制的ACL解决方案?ACL的粒度是多少?

EN

回答 2

Stack Overflow用户

发布于 2019-02-25 19:26:52

文档级ACL粒度始终是棘手的,因为您的数据集将增长,可能会出现一些性能问题。我个人更喜欢使用像Neo4J这样的GraphDB来存储这些类型的文档。在管理这种类型的ACL时,它比关系数据库可靠得多,它的查询性能也更好。

票数 1
EN

Stack Overflow用户

发布于 2019-02-25 19:19:19

有一种解决方案,但它需要大量的工作。

在database on Picture表中,您可以创建ACL列,其中包含有权访问此项目的人员的数据。然后当这种情况发生时:

使用pictureId将图片请求发送到/api/

我假设您知道当前登录用户的userId?

如果是,您可以执行以下操作。使用pictureId从数据库中获取图片,并将列ACL中的userId与当前登录的用户进行比较。如果来自当前登录用户的userId在ACL列中,则此用户可以读取/获取此图片。

如果需要,您可以通过添加用户可以在图片上执行的操作(创建、读取、更新、删除)来添加更多功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54272269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档