加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 有人可以解释Spring Security BasePermission.Create吗

发布时间:2020-12-15 00:42:58 所属栏目:Java 来源:网络整理
导读:我正在开发一个涉及 Spring Security ACL的项目,我遇到了创建权限BasePermission.CREATE.有人请解释这应该如何工作或它允许某人做什么? 我的理解是每个对象都有一个acl,每个acl都有很多ace,每个ace都有一个sid和一个权限.如果必须创建一个对象以便将acl附加
我正在开发一个涉及 Spring Security ACL的项目,我遇到了创建权限BasePermission.CREATE.有人请解释这应该如何工作或它允许某人做什么?

我的理解是每个对象都有一个acl,每个acl都有很多ace,每个ace都有一个sid和一个权限.如果必须创建一个对象以便将acl附加到它,那么如何授予对象创建它的权限?

解决方法

Spring安全性通过 ObjectIdentity接口间接授予域对象的权限.

正如您所提到的,到目前为止,通常的情况是您首先创建或获取域对象,然后为域对象构造ObjectIdentityImpl:

MyDomainObject secured = new MyDomainObject();
ObjectIdentity securedIdentity = new ObjectIdentityImpl(secured);

然后使用ObjectIdentity实例使用spring安全框架检索ACL.

但是,这不是使用对象标识的唯一方法.您可以传递对不是实际业务对象的objectIdentity的引用,但是如果已创建,则可以使用某种方法来标识它.

例如,想象一下我们想要保护文件.我们可以使用受保护的java.io.File实例创建ObjectItentity.身份中的File对象只是对文件的引用 – 它不是实际文件 – 文件可能甚至不存在,但我们有一个ObjectIdentity,然后我们可以推断安全性并获取ACL.

此模式可以应用于任何类型的域对象.创建一个DomainObjectPrototype实现,该实现根据保护域对象所需的域功能来描述域对象,但实际上并不需要对域对象的引用.您可以将此视为某些服务实际创建该域对象所需的详细信息.

PS:让我承认我从未使用过弹簧安全装置,但看完example之后我的设计模式似乎很清楚.

编辑:我已经更新了这个以希望更清楚 – 没有必要创建ObjectIdentity的实现,因为我原来写的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读