Springboot Security hasRole不起作用
我无法hasRole
在@PreAuthorize
注解中使用方法。也request.isUserInRole(“ADMIN”)
给false
。我想念什么?虽然.hasAuthority(“ADMIN”)
效果很好。
我正在从数据库向用户分配权限。
回答:
你必须命名前缀你的权威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_”开头,则会添加该角色。可以通过修改
defaultRolePrefix
on来自定义DefaultWebSecurityExpressionHandler
。
以上是 Springboot Security hasRole不起作用 的全部内容, 来源链接: utcz.com/qa/435556.html