Когда клиент, не прошедший проверку подлинности, запрашивает URL-адрес, который требует неанонимного уровня доступа, определенного в security-config.xml
, Spring Security отправляет HTTP-перенаправление на нашу страницу входа (например, /login
). Это нормально.
Проблема заключается в том, что при отсутствии существующего сеанса (идентифицируемого cookie-файлом, предоставленным в запросе клиента), Spring-Security создает перенаправление, которое также указывает новый сеанс клиента в URL-адресе, например, /login;jsessionid=8o7pglapojus
.
Многие контейнеры поддерживают это (по-видимому, он прекрасно работает в tomcat?), Но похоже, что Jetty (что мы сейчас и используем) не поддерживает - перенаправленный URL-адрес доходит до нашего маршрутизатора URL-адреса полностью без изменений (включая jsessionid
«параметр»), и указанный сеанс не связан с запросом /login
посредством jetty / spring-security (т. е. в заголовке Set-Cookie ответа на * 1010 предоставляется совершенно новый идентификатор сеанса * запрос).
Мы можем обойти это, сопоставив /login.*
в наших маршрутах, но мне любопытно, есть ли способ предотвратить отправку идентификатора сеанса в перенаправлении аутентификации для начала.