Mat*_*ers 8 java security spring spring-security
我正在开发一个涉及Spring Security ACL的项目,我遇到了创建权限BasePermission.CREATE.有人请解释这应该如何工作或它允许某人做什么?
我的理解是每个对象都有一个acl,每个acl都有很多ace,每个ace都有一个sid和一个权限.如果必须创建一个对象来创建它,您如何授予对象创建它的权限?
Spring安全性通过ObjectIdentity接口间接授予域对象的权限.
正如您所提到的,到目前为止,通常的情况是您首先创建或获取域对象,然后ObjectIdentityImpl为域对象构造一个:
MyDomainObject secured = new MyDomainObject();
ObjectIdentity securedIdentity = new ObjectIdentityImpl(secured);
Run Code Online (Sandbox Code Playgroud)
然后使用该ObjectIdentity实例使用spring安全框架检索ACL.
但是,这不是使用对象标识的唯一方法.您可以传递对不是实际业务对象的objectIdentity的引用,但是如果已创建,则可以使用某种方法来标识它.
例如,假设我们想要保护文件.我们可以使用受保护的java.io.File实例创建ObjectItentity .File身份中的对象只是对文件的引用 - 它不是实际文件 - 文件甚至可能不存在,但我们有一个ObjectIdentity,然后我们可以推断安全性并获取ACL.
此模式可以应用于任何类型的域对象.DomainObjectPrototype根据保护域对象所需的域功能创建描述域对象的实现,但实际上并不需要对域对象的引用.您可以将此视为某些服务实际创建该域对象所需的详细信息.
PS:让我承认我从未使用过弹簧安全装置,但看了一个例子后,我的设计模式似乎很清楚.
编辑:我已经更新了这个以希望更清楚 - 没有必要创建ObjectIdentity的实现,因为我原来写的.
| 归档时间: |
|
| 查看次数: |
1632 次 |
| 最近记录: |