При настройке ограничений безопасности для ролей веб-модуля в приложении J2EE у меня возникает следующая проблема:
Применение:
Предоставление сервлета с именем CustomersServlet , который получает два параметра в URL:
- Строка, представляющая операцию (INS, UPD, DLT и DSP).
- Идентификационный номер для идентификации клиента, с которым будет выполняться операция.
EG .: URL /servlet/cusotmersServlet?UPD,5
используется для обновления данных клиента № 5, а URL /servlet/customersServlet?DLT,8
используется для удаления номера клиента 8.
Проблема:
Если я использую это ограничение безопасности, доступ к сервлету может получить только указанная роль, что нормально:
<security-constraint>
<web-resource-collection>
<web-resource-name>...</web-resource-name>
<url-pattern>/servlet/clientsServlet*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>clientAdmin</role-name>
</auth-constraint>
</security-constraint>
Но я хочу ограничить возможность добавления клиентов только ролью с именем clientAdmin .
Я пробовал несколько шаблонов URL, но ни один из них не работает так, как я хочу (все они позволяют каждой роли получать доступ к сервлету с любым параметром):
<url-pattern>/servlet/clientsServlet?INS,*</url-pattern>
<url-pattern>/servlet/clientsServlet?INS/*</url-pattern>
...
Как использовать подстановочный знак *
в теге url-pattern
?
Примечание. Приложение не может быть изменено, поэтому мне нужно решение, которое подразумевает только прикосновение к дескриптору развертывания.