javax.servlet.http.HttpServletRequest
类有一个名为isUserInRole
的方法。我使用它来检查用户是否具有admin
角色。但是,该方法区分大小写。因此,如果请求中的角色为Admin
或ADMIN
,则isUserInRole("admin")
将为false。我在多个应用程序的许多地方使用isUserInRole
方法来检查许多不同的角色。
是否有办法实现isUserInRole
功能不区分大小写,不需要使用isUserInRole
检查每种不同的可能案例组合?
答案 0 :(得分:13)
您可以使用HttpServletRequestWrapper
实现包装请求的过滤器 - 实现您的HttpServletRequestWrapper以覆盖isUserInRole()
方法以使其不区分大小写(例如,以大写形式配置所有角色,测试角色params转换为大写)。
快速搜索会找到大量的HTTPServletRequestWrapper示例......
答案 1 :(得分:3)
http://docs.oracle.com/javaee/6/tutorial/doc/gjiie.html
只需将多个角色名称映射到管理员角色:
<servlet>
<security-role-ref>
<role-name>admin</role-name>
<role-link>admin</role-link>
</security-role-ref>
<security-role-ref>
<role-name>Admin</role-name>
<role-link>admin</role-link>
</security-role-ref>
</servlet>
<security-role>
<role-name>admin</role-name>
</security-role>