2015-12-09 3 views
10

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

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

+0

Почему? У вас проблемы с написанием имен вашей роли последовательно? – EJP

+0

Существует несколько версий сторонней службы проверки подлинности, которые я использую в разных средах, один из которых содержит имена ролей, а другой - сохраняет. –

ответ

13

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

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

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> 
+0

Вызов 'isUserInRole' используется для выполнения различных путей кода на конечных точках отдыха на основе роли. У нас уже есть такая настройка в нашем web.xml для ограничения доступа. –

Смежные вопросы