Когда неаутентифицируемый клиент запрашивает URL, который требует неанонимного уровня доступа, как определено в security-config.xml
, пружинная безопасность отправляет перенаправление HTTP в нашу страницу входа в систему (например. /login
). Это прекрасно.
Проблема - то, которые отсутствуют существующая сессия (определенный cookie, обеспеченным в запросе клиента), пружинные проблемы безопасности перенаправление, которое также определяет новую сессию клиента в URL, например. /login;jsessionid=8o7pglapojus
.
Много контейнеров поддерживают это (по-видимому, это хорошо работает у кота?), но кажется, что Причал (который является тем, что мы используем прямо сейчас) не делает - перенаправленный URL прибывает до нашего абсолютно неповрежденного маршрутизатора URL (включая jsessionid
"параметр"), и именованная сессия не связан с /login
запрос jetty/spring-security (т.е. полностью новый идентификатор сессии обеспечивается в заголовке Cookie Набора ответа на /login
запрос).
Мы можем работать вокруг этого путем соответствия /login.*
в наших маршрутах, но мне любопытно, если существует какой-либо способ предотвратить эмиссию идентификатора сессии в перенаправлении аутентификации для начала.
В Spring Security 3.0.0 M1 или новее вы можете установить disable-url-rewriting = "true"
в
пространство имен. Посмотрим, поможет ли это. Также см. Этот запрос функции .
Здесь есть другое решение (для тех, у кого Spring Security, то есть я сам)
http://randomcoder.com/articles/jsessionid-considered-harmful
Создает оболочку фильтра сервлета и управляет этим.