Spring security 在Spring安全ACL中授予权限

Spring security 在Spring安全ACL中授予权限,spring-security,acl,Spring Security,Acl,我正在使用grails 1.3.7中的Spring Security ACL插件,但我的问题可能更一般:我希望允许拥有BasePermission.READ对象访问权限的用户能够将相同的权限授予其他用户。如果user1拥有对文档的读取权限,那么他应该能够与user2共享该权限,从而授予他对同一文档的读取权限 首次创建文档时,user1被授予读取权限,因此我在日志中看到: DEBUG grails.app.service.org.grails.plugins.springsecurity.se

我正在使用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
然后,我尝试将读取权限授予user2,同时作为user1进行身份验证,我得到以下异常:

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>

角色\u管理员

此处的
角色\u管理员
应该是登录用户对象作为权限的一部分所具有的角色。基本上,具有此角色的任何人都可以管理权限。

您找到解决方案了吗?没有,没有。我曾尝试使用
AclAuthorizationStrategyImpl
,但没有成功。我将重新审视代码(已经有一段时间了!),看看是否有什么合理的东西可以从中提取出来,以回答这个问题。