我在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