如何为我的资源管理系统扩展授权

问题描述 投票:0回答:2

我有两个系统

一个访问管理系统,我在其中存储资源,用户及其之间的访问权限的引用。

一个资源管理系统,用于保存有关资源的数据并提供,以及用于管理和查询它们的API。

当在资源管理系统中接收到请求时,会将查询发送到访问管理系统以获取当前用户有权访问的资源ID的列表。从中获取数据时,此列表用作资源管理PostgreSQL数据库中的标准,因此我只返回用户有权访问的数据的结果。

当用户最多可以访问数百个资源时,此方法在小规模上可以很好地工作,但是如何扩展此方法以使其能够访问2000或20000资源的用户?我无法为每个请求在系统之间传递20000个资源ID!

postgresql architecture authorization
2个回答
0
投票

您的设计似乎是问题。

在不同系统中分离对象及其访问控制很奇怪。除了您遇到的效率低下之外,很难使系统保持同步。

一种有效的方法(PostgreSQL使用的方法是将对象本身的权限存储为“访问控制列表”。然后,您知道是否有人可以在不获取其他数据的情况下访问对象。另一个优点是,权限随对象自动删除。


0
投票

您可以为资源ID创建一个临时表,并与数据库中的更永久的数据进行联接。可能值得尝试看看它是否适合您的用例。

© www.soinside.com 2019 - 2024. All rights reserved.