一尘不染

Springboot Security hasRole不起作用

spring-boot

我无法hasRole@PreAuthorize注解中使用方法。也request.isUserInRole(“ADMIN”)false。我想念什么?虽然.hasAuthority(“ADMIN”)效果很好。

我正在从数据库向用户分配权限。


阅读 1976

收藏
2020-05-30

共1个答案

一尘不染

你必须命名前缀你的权威ROLE_来使用isUserInRole,看到Spring
Security的参考

HttpServletRequest.isUserInRole(String)将确定是否SecurityContextHolder.getContext().getAuthentication().getAuthorities()包含GrantedAuthority具有传递给的角色isUserInRole(String)。通常,用户不应将“
ROLE_”前缀传递给此方法,因为它是自动添加的。例如,如果要确定当前用户是否具有权限“ ROLE_ADMIN”,则可以使用以下命令:

boolean isAdmin = httpServletRequest.isUserInRole("ADMIN");

hasRole(也hasAnyRole)相同,请参见Spring Security
Reference

返回true当前委托人是否具有指定角色。默认情况下,如果提供的角色不是以“
ROLE_”开头,则会添加该角色。可以通过修改defaultRolePrefixon来自定义DefaultWebSecurityExpressionHandler

2020-05-30