gpt4 book ai didi

grails - 每个组织的 Spring Security 用户角色

转载 作者:行者123 更新时间:2023-12-02 13:58:09 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个名为 Organization 的顶级实体。用户和组织之间的关系是多对多的。

因此,我可能会遇到以下情况:

  • 用户 A 具有组织 A 的角色 ROLE_ADMIN
  • 用户 A 具有组织 B 的角色 ROLE_USER

  • 我需要确保当用户 A 访问组织 B 的资源时,他不是以管理员身份执行此操作。因此,我需要额外检查用户是否在组织级别具有正确的角色。 Spring Security 中是否有任何内置功能可以实现这一点?如果没有,有谁知道解决这个问题的最佳方法是什么?

    更新:更多信息...

    用户登录并选择他们想要使用的组织。那存储在 session 中。除此之外,URL 被 Secured 注释锁定。这意味着,如果 UserA 登录并选择 OrgA,他们应该能够访问/admin/user/create 但是,如果他们登录并选择 OrgB,他们应该无法访问该 URL。

    漫长的道路是在每个重要的方法中添加额外的检查。所以调用一些服务方法,说“好吧,你是 OrgA 的管理员,但不是 OrgB 的管理员,你使用 OrgB 登录,所以拒绝这个请求”。

    我希望有更多的 grails/spring-security 来处理这个问题。

    最佳答案

    您可能可以通过使用自定义 AccessDecisionVoter 来做到这一点。 . vote方法将为您提供资源(方法或 URL)的“配置属性”,这通常是所需的角色,您可以直接从 Authentication 获取当前用户的角色/权限。对象,或通过读取当前组织并为用户选择适当的角色。

    我假设您有某种方法可以根据用户选择的组织来区分用户的角色。

    本质上,您将编写标准 RoleVoter 的扩展版本。 ,这将组织考虑在内。

    关于grails - 每个组织的 Spring Security 用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10875042/

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