一尘不染

Spring Security从3.2.7更新到4.0.2时如何处理defaultRolePrefix =“ ROLE_”

spring-boot

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

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

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

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

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


阅读 451

收藏
2020-05-30

共1个答案

一尘不染

我找到了解决方案。我需要将hasRole更改为hasAuthority,例如:

@PreAuthorize("hasAuthority('PERMISSION_CREATE_NODE')")
2020-05-30