gpt4 book ai didi

spring - Spring Security 上的组和 acl

转载 作者:行者123 更新时间:2023-12-04 10:02:27 25 4
gpt4 key购买 nike

我想使用 Spring Security 来管理用户、组和权限。

我想使用 ACL 来保护我的域对象,但我找不到将组分配给 acl 的方法。

例如:
我有用户和组。每个组可以拥有以下证券:
- 管理论坛(可以是 ROLE_FORUM_MANAGER 之类的角色)
- 编辑特定论坛(特定论坛上的 acl)。

此外,组由具有角色 ROLE_PERMISSION_MANAGER 的用户定义。 .但该用户定义的所有组只能由该用户编辑和管理。所以组附加到一个用户。没错,假设用户创建了一个 google 组:该用户只能为他创建的组管理正确的权限组。所以他可以创建组来管理自己的谷歌组的特定论坛。

我该怎么做?

我阅读了 spring 安全文档和以下教程(所以请不要将我发送到这些链接):
http://grzegorzborkowski.blogspot.com/2008/10/spring-security-acl-very-basic-tutorial.html
http://blog.denksoft.com/?page_id=20

最佳答案

检查 Spring Security 3.0,您可能可以通过使用 Spring 表达式语言完全避免使用 ACL。

例如,要编辑论坛,您将拥有一个像这样保护的方法:

@PreAuthorize("hasRole('ROLE_FORUM_MANAGER') and hasPermission(#forum,'update'))
public void updateForum(Forum forum) {
//some implementation
}

然后,您将在自定义权限评估器中实现 hasPermission 方法,例如:

public class ForumPermissionEvaluator implements PermissionEvaluator {

public boolean hasPermission(Authentication authentication,
Object domainObject, Object permission) {
//implement
}

public boolean hasPermission(Authentication authentication,
Serializable targetId, String targetType, Object permission) {
//implement
}
}

最后,在应用程序配置中将其连接起来:

<beans:bean id="expressionHandler"
class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
<beans:property name="permissionEvaluator" ref="permissionEvaluator"/>
</beans:bean>

<beans:bean id="permissionEvaluator"
class="x.y.z.ForumPermissionEvaluator" />

关于spring - Spring Security 上的组和 acl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1920959/

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