如何处理Spring Security更新中的defaultRolePrefix =“ROLE_”从3.2.7到4.0.2.RELEASE

时间:2015-08-13 19:11:43

标签: spring spring-security spring-boot

My Spring Boot应用程序适用于Spring Security 3.2.7.RELEASE。 现在,我想将其更新为4.0.2.RELEASE

经过数小时的调试后,我发现Spring Security 4.0.2.RELEASE使用defaultRolePrefix="ROLE_"

in

org.springframework.security.access.expression.SecurityExpressionRoot.hasAnyAuthorityName(String prefix, String... roles)方法

在我的应用程序中,我使用没有此前缀的角色,因此我得到AccessDeniedException

如何配置Spring Boot以使用SecurityExpressionRoot.defaultRolePrefix=""

2 个答案:

答案 0 :(得分:14)

我找到了解决方法如何修复它。我需要将hasRole更改为hasAuthority,例如:

@PreAuthorize("hasAuthority('PERMISSION_CREATE_NODE')")

答案 1 :(得分:0)

另一方面,您可以删除here所述的角色前缀ass。在这个cas中你可以自由使用其他注释。