gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:40 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com