Java 将AOP与Spring安全ACL一起使用

Java 将AOP与Spring安全ACL一起使用,java,spring,spring-security,aop,acl,Java,Spring,Spring Security,Aop,Acl,我对Spring安全框架非常陌生,尤其是ACL。经过几个小时的阅读,我想我已经掌握了开始保护我的应用程序所需要做的大部分事情 然而,有件事困扰着我:虽然很容易找到关于如何读取ACL权限的使用说明(例如通过@PreAuthorize),但当您想要创建和持久化ACL权限时,它开始变得混乱 Spring安全手册告诉我们,他们不想为任何标准而烦恼,但鼓励我们使用AOP。这里的许多教程和答案直接在业务代码中使用AclService,破坏了流程中的“关注点分离”原则 那我该怎么办?职业选手怎么办?我是否应该

我对Spring安全框架非常陌生,尤其是ACL。经过几个小时的阅读,我想我已经掌握了开始保护我的应用程序所需要做的大部分事情

然而,有件事困扰着我:虽然很容易找到关于如何读取ACL权限的使用说明(例如通过@PreAuthorize),但当您想要创建和持久化ACL权限时,它开始变得混乱

Spring安全手册告诉我们,他们不想为任何标准而烦恼,但鼓励我们使用AOP。这里的许多教程和答案直接在业务代码中使用AclService,破坏了流程中的“关注点分离”原则


那我该怎么办?职业选手怎么办?我是否应该尝试在自定义注释上定义切入点以创建/删除ACL条目?或者我应该用ACL问题“污染”我的代码吗

好吧,经过一周的工作,我现在更了解这些东西是如何工作的了

首先,应该尝试使用简单、朴素的方法,在每个服务层方法中直接使用AclService来使用ACL。构建抽象有很大帮助(基本上是@ServiceBean中的grantAccess(用户名、对象、权限等)方法)

一旦所有内容都通过ACL写入和@PreAuthorize/@posauthorize/@secured el测试进行了安全保护,那么您就可以开始考虑AOP来清除代码中的所有安全问题。您可以使用ACL写入来创建一个服务方法列表,并向其中添加建议,以便在一个中心位置处理所有安全性

SpringSecurityACL非常容易设置和理解,即使在现有用户的现有项目上也是如此(您必须构建迁移脚本)