- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在从事一个涉及 Spring Security ACL 的项目,我遇到了创建权限 BasePermission.CREATE
。有人可以解释一下这应该如何工作或者它允许某人做什么吗?
据我了解,每个对象都有一个 acl,每个 acl 都有很多 ace,每个 ace 都有一个 sid 和一个权限。如果必须创建对象才能将 acl 附加到对象,您如何授予创建对象的权限?
最佳答案
Spring Security 通过 ObjectIdentity 间接授予域对象权限界面。
正如您提到的,到目前为止,通常的情况是您首先创建或获取域对象,然后为域对象构造一个 ObjectIdentityImpl
:
MyDomainObject secured = new MyDomainObject();
ObjectIdentity securedIdentity = new ObjectIdentityImpl(secured);
然后您使用 ObjectIdentity
实例通过 spring 安全框架检索 ACL。
然而,这并不是使用对象标识的唯一方法。您可以传递对 objectIdentity 的引用,它不是实际的业务对象,但如果它是创建的,则有一些识别它的方法。
例如,假设我们想要保护文件。我们可以使用 protected java.io.File
实例创建 ObjectItentity。标识中的 File
对象只是对文件的引用 - 它不是实际文件 - 该文件甚至可能不存在,但我们有一个 ObjectIdentity,我们可以推断安全性和获取的 ACL。
此模式可应用于任何类型的领域对象。创建一个 DomainObjectPrototype
实现,根据保护域对象所需的域特性来描述域对象,但实际上不需要引用域对象。您可以将其视为某些服务实际创建该域对象所需的详细信息。
PS:让我承认我从未使用过 spring security,但在查看 example 之后,设计模式对我来说似乎很清楚。 .
编辑:我已经对此进行了更新,希望能使它更清楚——没有必要像我最初写的那样创建 ObjectIdentity 的实现。
关于java - 有人可以解释 Spring Security BasePermission.Create 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2733947/
我正在尝试编写自定义 rest_framework 权限,以防止用户查询与他们不同公司的信息。不幸的是,我似乎无法从 has_permission() 中访问任何 URL 参数。或 has_objec
我正在从事一个涉及 Spring Security ACL 的项目,我遇到了创建权限 BasePermission.CREATE。有人可以解释一下这应该如何工作或者它允许某人做什么吗? 据我了解,每个
我是一名优秀的程序员,十分优秀!