我正在使用一个使用Spring ACL的业务应用程序,我希望对特定的域对象拥有细化权限。
根据this post,角色和权限在Spring ACL中基本相同。在我看来,概念上的区别在于角色具有一个或多个其他授予的权限或权限层次结构,权限只是一个不在任何层次结构中的角色。
所以我希望OP_USER_MANAGEMENT_PERM
成为可以授予的权限,并允许用户管理此应用程序中的其他用户。任何用户(包括常规用户)都应该能够在授予其帐户OP_USER_MANAGEMENT_PERM
权限后执行这些操作。
我的大部分都在工作,但我仍然坚持理解aclAuthorizationStrategy。出于某种原因,如果我没有:
<bean class="org.springframework.security.core.authority.GrantedAuthorityImpl">
<constructor-arg value="OP_USER_MANAGEMENT_PERM"/>
</bean>
在此:
<bean id="aclAuthorizationStrategy" class="org.springframework.security.acls.domain.AclAuthorizationStrategyImpl">
<constructor-arg>
<list>
<bean class="org.springframework.security.core.authority.GrantedAuthorityImpl">
<constructor-arg value="ROLE_ADMIN"/>
</bean>
<bean class="org.springframework.security.core.authority.GrantedAuthorityImpl">
<constructor-arg value="ROLE_ADMIN"/>
</bean>
<bean class="org.springframework.security.core.authority.GrantedAuthorityImpl">
<constructor-arg value="OP_USER_MANAGEMENT_PERM"/>
</bean>
</list>
</constructor-arg>
</bean>
然后,应用程序将不允许OP_USER_MANAGEMENT_PERM
的普通用户更改其他用户的权限,因为我收到此错误org.springframework.security.acls.model.NotFoundException: Unable to locate a matching ACE for passed permissions and SIDs
但是当我添加那个块时它有效吗?这可以吗?