spring-security ACL教程

时间:2014-07-09 18:59:05

标签: spring permissions spring-security acl

我需要为项目添加角色和权限以及访问列表。我发现this但我发现它有点过于基本和具体。

在实施之前,我应该阅读或遵循更好的教程/文章/示例吗?

1 个答案:

答案 0 :(得分:5)

我也不喜欢所提供教程的特殊性。我没有指向教程的链接,但也许我可以给你一些路标来引导你向解决方向发展。

我所做的是创建自己的ACL和权限。我创建了一个新类SecuredEntity,它是我所有需要ACL支持的域实体的父类。在我的情况下这是可能的,因为我从头开始。显然,如果你不能扩展共同的祖先,你可以使用组合而不是继承。

此SecuredEntity包含我自己的ACL实现,它基本上是主体到权限的映射。委托人是帐户ID,角色或组。每个用户都有一组主体,它们可以作为集合{用户自己的帐户,用户的所有角色以及帐户所属的任何组}。

然后我实现了一个自定义PermissionEvaluator,它检索为提供的Authentication指示的用户设置的主体,然后检查指示的对象以确定用户是否已指示权限。

在使用Default表达式处理程序和Web表达式处理程序注册自定义权限评估程序之后,我可以使用诸如

之类的表达式
@PreAuthorize("hasPermission(#entityId, 'EntityClass', 'read')")
@RequestMapping("/entities/{entityId}") 
public String fetchEntity(@PathVariable("entityId") String entityId) {...}