Spring security @PreAuthorize SecurityExpressionRoot或PermissionEvaluator

时间:2015-01-03 07:56:31

标签: java spring spring-mvc spring-security

Spring Security @PreAuthorize接受了很多表达式,但它如何决定表达式中方法的类,例如

@PreAuthorize("hasRole()")来自SecurityExpressionRoot@PreAuthorize("hasPermission()")来自PermissionEvaluator等级。它如何决定使用哪个类实例?

我对Spring AOP并不是很熟悉,因此无法深入挖掘。

1 个答案:

答案 0 :(得分:2)

hasPermission表达式也会针对SecurityExpressionRoot进行评估,但后者会委托给PermissionEvaluator。如果have a look at the SecurityExpressionRoot source,您可以轻松地看到这一点。

默认情况下,权限表达式为automatically denied,但设置不同的实例会控制hasPermission表达式的行为方式。