Spring Security @PreAuthorize
接受了很多表达式,但它如何决定表达式中方法的类,例如
@PreAuthorize("hasRole()")
来自SecurityExpressionRoot
而@PreAuthorize("hasPermission()")
来自PermissionEvaluator
等级。它如何决定使用哪个类实例?
我对Spring AOP并不是很熟悉,因此无法深入挖掘。
答案 0 :(得分:2)
hasPermission
表达式也会针对SecurityExpressionRoot
进行评估,但后者会委托给PermissionEvaluator
。如果have a look at the SecurityExpressionRoot
source,您可以轻松地看到这一点。
默认情况下,权限表达式为automatically denied,但设置不同的实例会控制hasPermission
表达式的行为方式。