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=""
?
答案 0 :(得分:14)
我找到了解决方法如何修复它。我需要将hasRole更改为hasAuthority,例如:
@PreAuthorize("hasAuthority('PERMISSION_CREATE_NODE')")
答案 1 :(得分:0)
另一方面,您可以删除here所述的角色前缀ass。在这个cas中你可以自由使用其他注释。