【发布时间】:2014-07-09 18:59:05
【问题描述】:
我需要将角色和权限以及访问列表添加到我们的项目中。我找到了this,但我发现它有点过于基础和具体。
在实施之前我应该阅读或遵循更好的教程/文章/示例吗?
【问题讨论】:
标签: spring permissions spring-security acl
我需要将角色和权限以及访问列表添加到我们的项目中。我找到了this,但我发现它有点过于基础和具体。
在实施之前我应该阅读或遵循更好的教程/文章/示例吗?
【问题讨论】:
标签: spring permissions spring-security acl
我也不喜欢所提供教程的特殊性。我没有指向教程的链接,但也许我可以给你一些路标来指导你找到解决方案。
我所做的是创建自己的 ACL 和权限。我创建了一个新类 SecuredEntity,它是我所有需要 ACL 支持的域实体的父类。当我从头开始时,这在我的情况下是可能的。显然,如果你不能扩展一个共同的祖先,你可以使用组合而不是继承。
这个 SecuredEntity 包含我自己的 ACL 实现,它基本上是主体到权限的映射。委托人可以是帐户 ID、角色或组。每个用户都有一组他们可以充当的委托人,这是一组{用户自己的帐户、用户的所有角色以及该帐户所属的任何组}。
然后我实现了一个自定义PermissionEvaluator,它检索由提供的Authentication 指示的用户的主体集,然后检查指示的对象以确定用户是否已指示权限。
在使用默认表达式处理程序和 Web 表达式处理程序注册自定义权限评估程序后,我可以使用诸如
之类的表达式@PreAuthorize("hasPermission(#entityId, 'EntityClass', 'read')")
@RequestMapping("/entities/{entityId}")
public String fetchEntity(@PathVariable("entityId") String entityId) {...}
【讨论】: