gpt4 book ai didi

java - : dynamic groups, 基于权限的内容列表授权,基于微服务的架构?

转载 作者:行者123 更新时间:2023-12-02 06:04:40 24 4
gpt4 key购买 nike

我不确定 Spring Security/Spring Cloud 是否可以满足我的授权需求。这是我的用例:

  • 我有一个类似 CMS 的应用程序。
  • 可以将内容分配给一个或多个“组”
  • 如果用户至少属于其中一个群组,则该用户可以查看该内容。
  • 重要说明:这些组没有硬编码!通过网络应用程序,用户可以(在运行时)创建新的自定义组,因此组和用户都位于数据库表内。

示例:内容分配给组:“德国”、“瑞典”、“程序员”、“经理”。

  • 来自德国的经理可以阅读该内容
  • 来自法国的经理可以阅读该内容(他至少是一名经理)
  • 来自法国的用户体验设计师无法阅读该内容。

为了管理访问单个内容的权限,检查非常简单!

我最大的问题是关于允许用户查看的列出内容。目前我通过 SQL 查询来管理它。我将内容与其指定的组连接起来,然后使用这种 SQL 来过滤内容:

... WHERE ... group IN  [[list of groups associated to the authenticated user]]

为了防止性能问题,这些查询结果会被缓存。

当我向这些内容添加“数据”时,问题似乎更糟,让我们想象一下可以对这些内容进行评论。我只想列出用户有权查看的评论。

规则很简单,如果允许您查看其父内容,您就可以阅读评论。

同样,如果我想检查用户查看单个评论的权限,检查非常简单,但如果我想列出评论,事情就更困难了。

最后,如果我想采用基于微服务的架构,评论将由不同的服务管理(不是吗?)。但为了列出允许用户查看的评论,我再次需要所有“用户和组”信息,因此基于微服务的架构似乎不太合适。

我的设计方法完全错误吗?

非常感谢。

最佳答案

您需要 Spring Security 与访问控制列表(Spring Security ACL)相结合,这是基于域对象安全权限的最细粒度的用户权限。

通过 ACL,您可以为特定数据(相当于数据库中的一行,以便相互理解)分配权限,例如读取或写入,还可以分配给用户或组。

带有 ACL 的 Spring Security 涵盖了您所描述的所有场景,您可以在 start here 中找到一个示例。

the comments will be managed by a different service (no?)

这取决于你,取决于你的场景

But in order to list the comments a user is allowed to see I'd need again all the "users & groups" information,

当然!当您过滤信息时,您需要了解具有相关组/角色的登录用户

, so a micro-service based architecture doesn't seem so appropriate.

为什么?您经常需要用户信息(如果您有用户,您可以在需要时读取相关数据),这也发生在微服务中。您需要将用户信息在一个微服务之间传输到另一个微服务(例如使用 JWT)

关于java - : dynamic groups, 基于权限的内容列表授权,基于微服务的架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55949914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com