gpt4 book ai didi

java - 什么进入 Spring Security 的 ACL_OBJECT_IDENTITY 表?

转载 作者:行者123 更新时间:2023-11-29 09:03:02 25 4
gpt4 key购买 nike

我正在尝试将支持 ACL 的 Spring Security 集成到现有的 GWT 应用程序中,如果我单击另一个无用的链接,我发誓我需要一个新的鼠标和键盘。我已经了解了使用 Spring 通过 LDAP 对 Active Directory 进行身份验证所需的内容,我已经了解了如何根据 AD 属性(即组成员身份)分配自定义权限,我什至还了解了如何使用自定义 ACL 架构对权限执行自定义检查(真正的位掩码操作)。我还没有弄清楚的是 ACL 表中的内容。

ACL_SID

id:bigint (pk)
principal:boolean (ak)
sid:varchar (ak)

这个表是不言自明的;我们将仅在此处使用非主要条目。

ACL_CLASS

id:bigint (pk)
class:varchar (ak)

这张表也很不言自明。据我了解,我们只是为每个我们希望保护的类/接口(interface)创建一个条目。

ACL_ENTRY

id:bigint (pk)
acl_object_identity:bigint (fak)
ace_order:int (ak)
sid:bigint (fk)
mask:bigint
granting:boolean
audit_success:boolean
audit_failure:boolean

这个表也大部分是不言自明的;我们在 mask 字段中使用 bigint/long 自定义了架构,但问题源于 acl_object_identity 所引用的内容。很明显,它指向了ACL_OBJECT_IDENTITY中的字段,但是...

ACL_OBJECT_IDENTITY

id:bigint (pk)
object_id_class:bigint (fak)
object_id_identity:bigint (ak)
parent_object_identity:bigint (fk)
owner_sid:bigint (fk)
entries_inheriting:boolean

object_id_identity 是什么?一个方法? Spring Security注解是如何引用的?

MyClass.java

@PreAuthorize("hasPermission(#someInput, 'READ')")
public boolean myMethod(String someInput) {
return true;
}

据推测,#someInput 以某种方式引用了 ACL_OBJECT_IDENTITY.object_id_identity 字段,但如何引用?

最佳答案

首先,您需要某种域对象类来存储您的数据。这个类必须有一个 getId() 方法。例如:

public class DomainObject {
private Long id;
private String data;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}

将您的安全方法更改为:

@PreAuthorize("hasPermission(#someInput, 'READ')")
public boolean myMethod(DomainObject someInput) {
return true;
}

现在,someInput.getId()ACL_OBJECT_IDENTITY.object_id_identity 相同。

关于java - 什么进入 Spring Security 的 ACL_OBJECT_IDENTITY 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16308504/

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