Подтвердить что ты не робот

Нечувствительность к регистру для роли в HttpServletRequest

Класс javax.servlet.http.HttpServletRequest имеет метод isUserInRole. Я использую это, чтобы проверить, имеет ли пользователь, например, роль admin. Однако этот метод чувствителен к регистру. Итак, если роль в запросе была admin или admin, тогда isUserInRole("admin") будет false. Я использую метод isUserInRole в нескольких местах по нескольким приложениям для проверки нескольких разных ролей.

Есть ли способ добиться функциональности без функции isUserInRole, которая не требует проверки каждой возможной комбинации случаев с isUserInRole?

4b9b3361

Ответ 1

Вы можете реализовать фильтр, который обертывает запросы с помощью HttpServletRequestWrapper - реализовать ваш HttpServletRequestWrapper, чтобы переопределить метод isUserInRole(), чтобы сделать его нечувствительным к регистру (например, настроить все роли в верхнем регистре, параметры тестовой роли путем преобразования в верхний регистр).

Быстрый поиск найдет множество примеров HTTPServletRequestWrapper...

Ответ 2

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>