我一直在我的控制器方法上使用带有@PreAuthorize的spring security.我的理由是我希望授权检查在一个层中可预测地发生,并且在请求中尽可能早.但是,我刚刚阅读了spring security 3文档,并看到他们建议在服务层上应用方法级安全性(但他们没有说明原因).
我的问题是:应该在控制器层或服务层应用spring安全方法级别注释吗?(或"两者",或"它取决于"?)更重要的是:为什么?
Sha*_*eep 16
"这取决于" :).如果您的应用程序具有应用所有业务逻辑的服务层,那么这通常是应用安全约束的一个干净的地方,并确保您没有错过任何极端情况.
Web代码通常比较脏,有更多,它变化更快,最终可能会从多个地方调用相同的服务方法.有人可能会添加一个新控制器而忘记正确保护它.或者,您可能有不同类型的客户端调用相同的服务.
但这取决于您的应用程序的结构以及您的用例.您可能对为什么要保护控制器有一个很好的论据.
我认为该服务是使用它的更好地方。
尽管可能会在Controller上产生一些问题,并且 Spring Security FAQ建议将这种注释放在Service 上,但我知道某些操作的授权更多的是业务规则,而不是 Web 层的责任。@PreAuthorize
| 归档时间: |
|
| 查看次数: |
4631 次 |
| 最近记录: |