Spring security 如何实现ACL spring安全性以在一组用户之间共享一个对象,而无需在ACL_条目表中创建许多条目

Spring security 如何实现ACL spring安全性以在一组用户之间共享一个对象,而无需在ACL_条目表中创建许多条目,spring-security,spring-security-acl,Spring Security,Spring Security Acl,类似于下面提到的问题 我正在尝试使用acl spring security解决以下场景 我们得到了一个将学生结果共享给教师组的场景。在这个场景中,当教师登录时,只有在教师对结果对象具有读取权限时,他才能看到结果。如果我们需要将结果共享给具有读取权限的组中有10个成员的教师组,我们需要在ACL\U条目表中给出10个实体。这将这很复杂,因为条目会随着组成员和权限的增加而增加。是否有其他方式,如果我将结果共享给组,则只有一个acl条目,其中组对结果对象具有读取权限,教师应自动获得读取该对象的权限。您

类似于下面提到的问题

我正在尝试使用acl spring security解决以下场景

我们得到了一个将学生结果共享给教师组的场景。在这个场景中,当教师登录时,只有在教师对结果对象具有读取权限时,他才能看到结果。如果我们需要将结果共享给具有读取权限的组中有10个成员的教师组,我们需要在ACL\U条目表中给出10个实体。这将这很复杂,因为条目会随着组成员和权限的增加而增加。是否有其他方式,如果我将结果共享给组,则只有一个acl条目,其中组对结果对象具有读取权限,教师应自动获得读取该对象的权限。您是否也可以解释一下该模式的示例

请帮助

可能的副本:

如果你看这个问题,你会发现这个可能的解决方案:

我正在使用具有ACL机制的用户组。基本上,我确保为对象创建ACL时设置了所有者。然后,当其他用户尝试访问此对象时,将检查所有者的组,以查看是否存在匹配项

当然,这意味着当用户更改他的组时,对象将“随他而去”

如果不希望出现这种行为,可以将组对象的ACL作为安全对象的父ACL。然后,当用户更改组时,应为组对象ACL设置正确的条目。这样,安全对象将绑定到用户组,而不是用户本身

这实际上是另外两种不同于您所链接的问题中描述的可能性


在我链接的问题的评论中也有一个简短的对话,因此,如果您感兴趣,请务必阅读。

为了解决上述问题,我使用了以下方法。 我的模式中有用户和用户角色表。我在安全上下文中使用db作为身份验证管理器

SchoolA已经是我的应用程序的用户。
每当将教师添加到schoolA组时。我将schoolA作为角色添加到教师以及用户角色。同时将结果对象共享到具有读取权限的schoolA组。我将schoolA视为授权的AuthoritySID而不是PrincipalSID。因此,ACL_sid表中SchoolA sid的principal列将为false。每当教师在获取结果时登录时,我们都会检查教师是否对结果对象具有读取权限。但由于教师具有SchoolA角色,而SchoolA角色具有读取权限。当老师登录时,我可以得到结果对象。就这样,我解决了上述问题。

谢谢你的帮助,吉米。我用我的回答中提到的情景来整理这个问题。但我想通过尝试您的解决方案来获得这个问题的最佳解决方案。我没有得到太多与使用acl处理组共享相关的示例。为了更好地理解您的解决方案,您能否分享解释上述两种情况的示例。