javax.servlet.http.HttpServletRequest
类有一个名为isUserInRole
的方法。例如,我使用它来检查用户是否具有admin
角色。但是,该方法区分大小写。因此,如果请求中的角色是Admin
或ADMIN
,那么isUserInRole("admin")
将为false。我在多个应用程序的多个地方使用isUserInRole
方法来检查多个不同的角色。
有没有一种方法可以实现isUserInRole
的功能,不需要使用isUserInRole
检查每个不同的可能案例组合?
您可以实现一个使用HttpServletRequestWrapper
包装请求的过滤器-实现HttpServletRequestWrapper
以覆盖isUserInRole()
方法,使其不区分大小写(例如,以大写配置所有角色,通过转换为大写测试角色参数)。
快速搜索会发现大量的HTTPServletRequestWrapper
示例。。。
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>