我一直在我的控制器方法上使用 Spring Security 和 @PreAuthorize 。我的理由是,我希望授权检查能够在一层中以可预测的方式进行,并且在请求中尽早进行。但是,我刚刚阅读了 spring security 3 文档,看到他们建议在服务层上应用方法级安全性(但他们没有说明原因)。
我的问题是:spring security方法级注解应该应用在控制器层还是服务层? (或者“两者”,或者“这取决于”?)更重要的是:为什么?
“这取决于” :)。如果您的应用程序有一个服务层,通过它应用所有业务逻辑,那么这通常是一个应用安全约束的干净地方,并确保您没有错过任何极端情况。
Web 代码通常比较混乱、数量较多、变化速度更快,最终您可能会从多个位置调用相同的服务方法。有人可能添加了新的控制器,却忘记正确保护它。或者,您可能有不同类型的客户端调用相同的服务。
但这取决于您的应用程序的结构以及您的用例。对于为什么要保护控制器,您可能有一个很好的论据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)