不区分大小写检查HttpServletRequest中的角色

时间:2015-12-09 17:34:52

标签: java servlets https roles user-roles

javax.servlet.http.HttpServletRequest类有一个名为isUserInRole的方法。我使用它来检查用户是否具有admin角色。但是,该方法区分大小写。因此,如果请求中的角色为AdminADMIN,则isUserInRole("admin")将为false。我在多个应用程序的许多地方使用isUserInRole方法来检查许多不同的角色。

是否有办法实现isUserInRole功能不区分大小写,不需要使用isUserInRole检查每种不同的可能案例组合?

2 个答案:

答案 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>