Java Spring Ssecurity ACL-域状态更改
我们已经为spring安全项目建立了基于角色的身份验证和隐式和显式角色的角色层次结构。我们还需要根据域对象的状态提供不同的授权。例如: 订单域对象:Java Spring Ssecurity ACL-域状态更改,java,spring-security,acl,Java,Spring Security,Acl,我们已经为spring安全项目建立了基于角色的身份验证和隐式和显式角色的角色层次结构。我们还需要根据域对象的状态提供不同的授权。例如: 订单域对象: 订单处于初始状态时 字段1、2、3可由RoleA编辑,并可由RoleB查看 字段4、5、6可由角色A和角色B编辑 订单处于QA状态时 字段1、2、3可由RoleA查看,也可由RoleB编辑 字段4、5、6可由角色A和角色B查看 订单处于完成状态时 字段1、2、3可由RoleA查看,也可由RoleB查看 RoleA和RoleB可查看字段4
- 订单处于初始状态时
- 字段1、2、3可由RoleA编辑,并可由RoleB查看
- 字段4、5、6可由角色A和角色B编辑
- 订单处于QA状态时
- 字段1、2、3可由RoleA查看,也可由RoleB编辑
- 字段4、5、6可由角色A和角色B查看
- 订单处于完成状态时
- 字段1、2、3可由RoleA查看,也可由RoleB查看
- RoleA和RoleB可查看字段4、5、6
这个需求可以由Spring域对象安全性来处理,还是应该通过自定义代码/配置来更好地处理 你说得很对。Spring安全权限评估器和ACL基础结构在域对象级别而不是字段级别工作。您可以创建权限,如
编辑字段1
,编辑字段2
,查看字段1
等等,但感觉有点强制。当然,您可以使用其他带有@PreAuthorize
注释等的Spring安全基础设施,并使用自定义代码进行扩展
如果您对用户有一些信心,并且允许您放松安全性,我建议跳过字段级别,只评估订单状态和角色。您可能需要一些审核日志,记录谁正在编辑什么内容。用户界面中的字段可以暗显,以避免意外编辑。我见过工作流应用程序以这种方式运行。多亏了holmis,我没有深入到单个字段级别,而是关注一小组字段。你提出了一个很好的审计线索,我们将有。我还计划调暗场地。因为这是一个内部应用程序,并且我们有审计和灰色字段,所以我们也不需要URL上额外的安全级别