我想使用Spring Security来管理用户,组和权限.
我想使用ACL来保护我的域对象,但我找不到将组分配给acl的方法.
例如:我有用户和组.每个组都可以拥有以下证券: - 管理论坛(可以是一个角色ROLE_FORUM_MANAGER
) - 编辑特定论坛(特定论坛上的acl).
此外,组由具有角色的用户定义ROLE_PERMISSION_MANAGER
.但是,此用户定义的所有组只能由此用户编辑和管理.因此,组附加到用户.确切地说,假设用户创建了一个Google群组:此用户只能为他创建的群组管理权限权限组.因此,他可以创建组来管理自己的谷歌组的特定论坛.
我该怎么做?
我阅读了春季安全文档和以下教程(所以请不要将我发送到这些链接):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 Expression Language完全避免使用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
}
}
最后,在应用程序配置中将它连接起来: