Мы используем Spring Безопасность в нашем веб-приложении. Большинство страниц защищены, то есть пользователь должен войти в систему, чтобы получить доступ к этим страницам. Обычно он работает нормально. Однако при выходе из системы мы сталкиваемся с нежелательным поведением.
Предположим, что пользователь вошел в систему и отправил запрос на сервер для загрузки некоторой (защищенной) страницы. Прежде чем этот запрос будет выполнен, один и тот же пользователь отправит запрос на выход (т.е. Запрос с servlet_path "/j_spring_security_logout" ). Запрос на выход обычно выполняется очень быстро, и его можно завершить раньше предыдущего запроса. Конечно, запрос на выход очищает контекст безопасности. Следовательно, предыдущий запрос теряет контекст безопасности в середине своей жизни, и это обычно вызывает исключение.
Фактически, пользователю не нужно начинать первый запрос "вручную". Этот сценарий может произойти на странице с автоматическим обновлением, т.е. Пользователь нажимает ссылку на выход только через секунду после того, как обновление было отправлено автоматически.
С одной точки зрения это можно рассматривать как содержательное поведение. С другой стороны, я предпочел бы предотвратить такую потерю контекста безопасности в середине срока службы запроса.
Есть ли способ настроить Spring Безопасность, чтобы этого избежать? (что-то вроде "отложить очистку контекста безопасности при наличии других одновременных запросов из того же сеанса" или "прочитать контекст безопасности только один раз во время одного запроса и кешировать его для дальнейшего использования" )
Спасибо.