【问题标题】:Spring Security authorization for custom usergroups自定义用户组的 Spring Security 授权
【发布时间】:2016-04-23 10:25:45
【问题描述】:
我正在尝试使用 Spring Security 实现 Web 应用程序。我了解 Spring Security 的基于角色的机制,并且可以让它发挥作用。我的问题是,在我的网络应用程序中,用户可以创建自己的组并向其中添加朋友(应用程序的其他用户)。用户的某些页面的访问是基于这个朋友组的。它应该类似于 facebook 用户和组。
如何使用 Spring Security 实现这些自定义用户组和对用户页面的访问?这个用例有默认机制吗?还是我应该实现自己的数据库表?
【问题讨论】:
标签:
java
web-applications
spring-security
authorization
【解决方案1】:
我正在使用具有 ACL 机制的用户组。基本上,我确保在为对象创建 ACL 时设置所有者。然后,当另一个用户尝试访问此对象时,会检查所有者的组以查看是否存在匹配项。
这当然意味着当用户更改他的组时,对象会“随他而去”。
如果您不希望这种行为,您可以将组对象的 ACL 作为安全对象的父 acl。然后,当用户更改组时,您应该为组对象 ACL 设置正确的条目。这样,安全对象与用户组而非用户本人相关联。
Spring Security Domain Object Security (ACLs)
【讨论】:
-
-
对于用户组还是整个ACL?我相信您可以找到很多关于如何设置 ACL 的示例,并且与设置 ACL 相比,用户组功能(正如我实现的那样)是小菜一碟 :) 我基本上只是创建了自己的 PermissionEvaluator 在 checkPermission 方法中,我只从 SecurityContext 检索两个用户 - ACL 所有者和当前用户,然后比较他们的组。 AclPermissionEvaluator - Spring 实现