gpt4 book ai didi

spring-security - 在 Spring Security ACL 中授予权限

转载 作者:行者123 更新时间:2023-12-01 14:23:31 25 4
gpt4 key购买 nike

我在 grails 1.3.7 中使用 Spring Security ACL 插件,但我的问题可能比这更通用:我想允许具有 BasePermission.READ 访问对象的用户能够将相同的权限授予其他用户。如果 user1 对文档具有读取权限,他应该能够与 user2 共享该文档,从而授予他对同一文档的读取权限。

首次创建文档时,user1 被授予读取权限,因此我在日志中看到了这一点:

DEBUG   grails.app.service.org.grails.plugins.springsecurity.service.acl.AclUtilService     Added permission BasePermission[...............................R=1] for Sid PrincipalSid[User user1] for com.fxpal.ara.Document with id 1

然后我尝试在身份验证为 user1 时向 user2 授予 READ 权限,但出现此异常:

org.springframework.security.acls.model.NotFoundException: Unable to locate a matching ACE for passed permissions and SIDs

所以我的问题是:1. 是否需要 BasePermission.ADMINISTRATION 才能允许用户向其他用户授予权限?2. 有没有其他方法可以在只有部分权限的情况下授予权限?该政策在哪里实现,是否可以替代?

更新:

好吧,我想我可以添加一个 AclAuthorizationStrategy 的新实现,它定义了方法 public void securityCheck(Acl acl, int changeType),但是这个方法没有将请求的权限作为参数,挫败了我检查兼容权限的策略。接下来要做的是重新实现 AclImpl 以使用不同的逻辑。重复大部分相同的代码似乎是一种耻辱...

最佳答案

您可以通过创建

<bean id="aclAuthorizationStrategy" class="org.springframework.security.acls.domain.AclAuthorizationStrategyImpl">
<constructor-arg>
<bean class="org.springframework.security.core.authority.SimpleGrantedAuthority">
<constructor-arg>
<value>ROLE_ADMINISTRATOR</value>
</constructor-arg>
</bean>
</constructor-arg>
</bean>

这里的 ROLE_ADMINISTRATOR 应该是 Logged in User 对象作为权限的一部分所具有的角色。基本上任何具有此角色的人都可以管理权限。

关于spring-security - 在 Spring Security ACL 中授予权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6134380/

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