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

标签 java security spring spring-security

我正在从事一个涉及 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/

相关文章:

android - 如何防止黑客在firebase数据库上读/写

java - 无法格式化为 XMLGregorianCalendar

Java公平队列

java - Spring MVC - 引用上传的图像

c - 利用 C 中的 Printf 漏洞

security - 安全 Web 应用程序的重要提示

spring - 在以下任何来源中均未找到插件 [id : 'io.spring.dependency-management' , 版本 : '1.0.5.RELEASE' , 应用:false]:

java - 如何在 Spring Batch : Updated 中循环运行步骤

java - Spring Boot 在运行时更改 DataSource 和 JPA 属性

java - 非顺序地构建一个字符串?