我们什么时候应该使用@PreAuthorize 和@Secured
When should we use @PreAuthorize and @Secured
我读了这个 Whosebug post
What's the difference between @Secured and @PreAuthorize in spring security 3?
但是,我仍然不清楚两者在安全性方面的最大区别是什么?与@Secured相比,在什么情况下我们应该使用@PreAuthorize?
@PreAuthorize
允许您对规则进行更细粒度的控制以保护 o 方法。您可以在其中使用 SpEL 表达式。
使用 @Secured
保护方法可以得到与 @PreAuthorize
相同的结果,但是 @Secured
是有限的,您没有太多的选项来调整规则(总简化就是规则是“静态的”)。
Spring Security 3.0 introduced the ability to use Spring EL expressions as an authorization mechanism in addition to the simple use of configuration attributes and access-decision voters which have seen before. Expression-based access control is built on the same architecture but allows complicated boolean logic to be encapsulated in a single expression.
@PreAuthorize
是一个较新的版本,所以你应该总是选择@PreAuthorize
,因为here.
提到的原因,它确实更好
事实上
@Secured("ROLE_ADMIN")
等同于 @PreAuthorize("hasRole('ROLE_ADMIN')")
此外,@PreAuthorize 语法更具可读性。
例如
@Secured({"ROLE_USER", "ROLE_ADMIN"})
被视为 ROLE_USER
or
ROLE_ADMIN
,这是一件奇怪且令人困惑的事情。
在 @PreAuthorize
的另一边,您使用 "Spring Expression Language (SpEL)" 显式定义 or
、and
表达式,这显然方便且更易读。
所以选择 @PreAuthorize
。
我读了这个 Whosebug post What's the difference between @Secured and @PreAuthorize in spring security 3? 但是,我仍然不清楚两者在安全性方面的最大区别是什么?与@Secured相比,在什么情况下我们应该使用@PreAuthorize?
@PreAuthorize
允许您对规则进行更细粒度的控制以保护 o 方法。您可以在其中使用 SpEL 表达式。
使用 @Secured
保护方法可以得到与 @PreAuthorize
相同的结果,但是 @Secured
是有限的,您没有太多的选项来调整规则(总简化就是规则是“静态的”)。
Spring Security 3.0 introduced the ability to use Spring EL expressions as an authorization mechanism in addition to the simple use of configuration attributes and access-decision voters which have seen before. Expression-based access control is built on the same architecture but allows complicated boolean logic to be encapsulated in a single expression.
@PreAuthorize
是一个较新的版本,所以你应该总是选择@PreAuthorize
,因为here.
事实上
@Secured("ROLE_ADMIN")
等同于 @PreAuthorize("hasRole('ROLE_ADMIN')")
此外,@PreAuthorize 语法更具可读性。
例如
@Secured({"ROLE_USER", "ROLE_ADMIN"})
被视为 ROLE_USER
or
ROLE_ADMIN
,这是一件奇怪且令人困惑的事情。
在 @PreAuthorize
的另一边,您使用 "Spring Expression Language (SpEL)" 显式定义 or
、and
表达式,这显然方便且更易读。
所以选择 @PreAuthorize
。