У меня есть Java веб-приложение, которое использует web.xml для настройки его безопасности: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>
Я хочу, чтобы все страницы в/админ/* должны быть защищены , и это работает. пользователь правильно сначала видит loginscreen и затем перенаправляется на исходную запрошенную страницу.
Я бы также хотел, чтобы мой контекстный корень был защищен: http://host:port/context/ Однако, когда я настраиваю шаблон <url-pattern></url-pattern>
и делаю запрос к корню, мой java-контроллер только начинает работать и отображает представление, не видя окна входа в систему. Почему этот шаблон работает для таких вещей, как <servlet-mapping>
(чтобы отобразить запрос на весенний сервлет), но не как ограничение безопасности?
Я столкнулся как с хромом, так и с firefox и перезапустил несколько раз.
ли вы использовать/* для конфигурации корневого контекста? – aksappy
@aksappy Нет, потому что/* как шаблон url означает «поймать все запросы», я не хочу этого, только корневой контекст. Например, /otherpage.do следует продолжать работать без разрешения. – user1884155
Согласно спецификации, вы сделали правильно. – aksappy