我对Spring Security框架特别是ACL还是很陌生。经过几个小时的阅读,我认为我掌握了开始保护我的应用程序所需的大部分工作。
但是,有些事情困扰我:虽然很容易找到有关如何读取ACL权限的用法说明(例如,通过@PreAuthorize),但是当您要创建和保留它们时,它会变得混乱。
Spring Security手册告诉我们他们不想打扰任何标准,但是我们鼓励使用AOP。这里的许多教程和答案都直接在其业务代码中使用AclService,从而破坏了流程中的“关注点分离”原则。
所以我该怎么做 ?优点是什么?我是否应该尝试在自定义批注中定义切入点,以创建/删除ACL条目?还是我应该用ACL问题“污染”我的代码?
好了,经过一周的工作,我现在对这些事情如何工作有了更好的了解。
首先,应该尝试在每个服务层方法内部直接使用AclService来使用ACL的简单,幼稚的方式。建立抽象有很多帮助(基本上是@Service bean中的grantAccess(username,object,Permission ...)方法)。
一旦所有内容都通过ACL编写和@ PreAuthorize / @ PostAuthorize / @ Secured el测试得到安全保护,您就可以开始考虑AOP从所有安全问题中清除代码。您可以使用ACL写入来组成服务方法列表,并向其中添加建议,以便在一个中央位置处理所有安全性。
即使在具有现有用户的现有项目上,Spring Security ACL也非常易于设置和理解(您必须构建迁移脚本)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句