我在grails 1.3.7中使用了Spring Security ACL插件,但我的问题可能比这个更通用:我想允许有BasePermission.READ
访问权限的用户能够向其他用户授予相同的权限。如果user1具有对文档的读取访问权限,则他应该能够与user2共享该文档,从而授予他对同一文档的读取权限。在Spring Security ACL中授予权限
当第一次创建的文档,用户1被授予读访问,所以我看到这个在日志中:
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而认证为用户1,我得到这个例外:
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以使用不同的逻辑。似乎是一个耻辱,大多数重复相同的代码...
您是否找到了解决方案? – fabiangebert 2012-03-22 07:30:11
不,不是真的。我曾尝试使用'AclAuthorizationStrategyImpl',但没有完成。我将重新访问代码(已经有一段时间了!),看看是否有任何合理的我可以从那里提取这个问题的答案。 – 2012-03-26 03:53:52