【发布时间】:2015-07-20 16:59:18
【问题描述】:
我正在学习 Spring Security,我正在使用 Spring Security 3.2.7,并且对 servlet 集成功能有疑问
参考 Spring 文档
3.1.3。 HttpServletRequest.isUserInRole(String)
HttpServletRequest.isUserInRole(String) 将确定 SecurityContextHolder.getContext().getAuthentication().getAuthorities() 是否包含 GrantedAuthority,其角色传递给 isUserInRole(String)。
通常用户不应将“ROLE_”前缀传入此方法,因为它是自动添加的。例如,如果要确定当前用户是否具有“ROLE_ADMIN”权限,可以使用以下命令:
boolean isAdmin = httpServletRequest.isUserInRole("ADMIN");
这可能有助于确定是否应显示某些 UI 组件。例如,您可能仅在当前用户是管理员时才显示管理员链接。
但是,当我尝试时,我发现 httpServletRequest.isUserInRole("ADMIN");返回 false,而 httpServletRequest.isUserInRole("ROLE_ADMIN");返回真。
调用 isUserInRole 时是否需要自动添加“ROLE_”前缀?
以下是我的配置(来自示例应用程序)
<authentication-manager>
<authentication-provider>
<user-service>
<user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="bob" password="bobspassword" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
【问题讨论】:
标签: java spring spring-security