我无法hasRole在@PreAuthorize注解中使用方法。也request.isUserInRole(“ADMIN”)给false。我想念什么?虽然.hasAuthority(“ADMIN”)效果很好。
hasRole
@PreAuthorize
request.isUserInRole(“ADMIN”)
false
.hasAuthority(“ADMIN”)
我正在从数据库向用户分配权限。
你必须命名前缀你的权威ROLE_来使用isUserInRole,看到Spring Security的参考:
ROLE_
isUserInRole
HttpServletRequest.isUserInRole(String)将确定是否SecurityContextHolder.getContext().getAuthentication().getAuthorities()包含GrantedAuthority具有传递给的角色isUserInRole(String)。通常,用户不应将“ ROLE_”前缀传递给此方法,因为它是自动添加的。例如,如果要确定当前用户是否具有权限“ ROLE_ADMIN”,则可以使用以下命令: boolean isAdmin = httpServletRequest.isUserInRole("ADMIN");
HttpServletRequest.isUserInRole(String)将确定是否SecurityContextHolder.getContext().getAuthentication().getAuthorities()包含GrantedAuthority具有传递给的角色isUserInRole(String)。通常,用户不应将“ ROLE_”前缀传递给此方法,因为它是自动添加的。例如,如果要确定当前用户是否具有权限“ ROLE_ADMIN”,则可以使用以下命令:
SecurityContextHolder.getContext().getAuthentication().getAuthorities()
GrantedAuthority
isUserInRole(String)
boolean isAdmin = httpServletRequest.isUserInRole("ADMIN");
与hasRole(也hasAnyRole)相同,请参见Spring Security Reference:
hasAnyRole
返回true当前委托人是否具有指定角色。默认情况下,如果提供的角色不是以“ ROLE_”开头,则会添加该角色。可以通过修改defaultRolePrefixon来自定义DefaultWebSecurityExpressionHandler。
true
defaultRolePrefix
DefaultWebSecurityExpressionHandler