Zac*_*ack 4 java spring annotations spring-security spring-annotations
我读过这篇stackoverflow帖子 @Secured和@PreAuthorize在spring security 3中的区别是什么? 但是,我还不清楚两者在安全方面有什么大不同?与@Secured相比,在什么情况下我们应该选择@PreAuthorize?
@PreAuthorize允许您对规则进行更细粒度的控制以确保方法安全.您可以在其中使用SpEL表达式.
保护方法可以获得与@Secured结果相同@PreAuthorize但结果@Secured有限的方法,并且您没有获得调整规则的大量选项(粗略的简化是规则是"静态的").
Spring Security 3.0引入了使用Spring EL表达式作为授权机制的能力,以及之前见过的配置属性和访问决策选民的简单使用.基于表达式的访问控制建立在相同的体系结构上,但允许将复杂的布尔逻辑封装在单个表达式中.
@PreAuthorize是一个较新的版本,所以你应该总是使用@PreAuthorize,这确实更好,因为这里提到的原因.
事实上
@Secured("ROLE_ADMIN") 是完全相同的 @PreAuthorize("hasRole('ROLE_ADMIN')")
此外,@ PreAuthorize语法更具可读性.
例如
@Secured({"ROLE_USER", "ROLE_ADMIN"})被视为ROLE_USER or ROLE_ADMIN,这是一种奇怪和令人困惑的东西.
在另一边与@PreAuthorize你定义明确or,and表达,这显然是方便和更具可读性.
那就去吧@PreAuthorize.
| 归档时间: |
|
| 查看次数: |
3015 次 |
| 最近记录: |