У меня есть веб-приложение java, которое использует web.xml для настройки своей безопасности:
<security-constraint>
<web-resource-collection>
<web-resource-name>webPages</web-resource-name>
<description>All web resources</description>
<url-pattern></url-pattern>
<url-pattern>/admin/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admins</role-name>
</auth-constraint>
<user-data-constraint>
<description>SSL not required</description>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
Я хочу, чтобы все страницы в /admin/* были защищены, и это работает. пользователь правильно сначала видит экран входа в систему, а затем перенаправляется на исходную запрошенную страницу.
Я также хотел бы, чтобы мой корень контекста был защищен: http://host:port/context/ Однако, когда я настройте шаблон <url-pattern></url-pattern>
и сделайте запрос в корень, мой java-контроллер просто начинает работать и показывает представление, при этом пользователь никогда не видит экран входа в систему. Почему этот шаблон работает для таких вещей, как <servlet-mapping>
(для сопоставления запроса с сервлетом Spring), но не как ограничение безопасности?
Я пробовал как в Chrome, так и в Firefox и перезапускал несколько раз.