gpt4 book ai didi

java - 如何更改Spring Security ACL中的权限?

转载 作者:行者123 更新时间:2023-12-02 00:38:11 24 4
gpt4 key购买 nike

我想将授予用户的权限扩展到实体。

我可以通过 MutableAclService 创建 ACL。

MutableAcl acl = this.mutableAclService.createAcl(new ObjectIdentityImpl(entity));            
acl.setOwner(SYSTEM_PRINCIPAL_SID);
acl.insertAce(0, permission, grantToSid, true);
this.mutableAclService.updateAcl(acl);

但我不知道如何更改 ACL。例如,如果用户具有实体的读取权限,我想为他提供额外的写入权限。或者给予其他用户相同的权限。

<小时/>

我的第一次尝试是调用 MutableAclService.createAcl 两次,但失败了:

org.springframework.security.acls.model.AlreadyExistsException: Object identity 'org.springframework.security.acls.domain.ObjectIdentityImpl[Type: test.Entity; Identifier: 3]' already exists

好吧,这看起来是正确的,但方式是错误的。但那该怎么办呢? 如何更改已定义某些权限的实体的 acl 权限?

最佳答案

我想你已经有了答案,如果你创建了一个MutableAcl,你可以简单地调用MutableAclServiceupdateAcl方法。如果此方法的约定正确实现(如果您使用自定义实现),它应该:

  • 从该实体的当前 ACL 中删除所有 ACE
  • 根据您传递给 updateAclMutableAcl 创建所有新 ACE
  • 更新 ObjectIdentity 上的所有相关字段
  • 更新 ACL 缓存

这样做的唯一缺点是它假定 ACL 采取“删除和加载”策略,这并不意味着增量将 ACE 和其他内容添加到现有 ACL。这意味着在修改 ACL 之前,您可能应该首先完整地阅读 ACL,这样您就不会无意中破坏主体上已有的任何 ACE。

希望有帮助!

关于java - 如何更改Spring Security ACL中的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7195116/

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