Я использую Spring Security 3.0 с Spring MVC. Мое веб-приложение на Java - это корзина покупок. Я использую Службу, которая хранит список покупок в сеансе. Когда пользователь А создает список покупок, а затем переходит к выходу из системы и повторному входу в систему, список покупок восстанавливается как обычно, но если другой пользователь Б перейдет в то же приложение, используя тот же браузер и перейдите к входу в систему, сеанс восстанавливается с помощью списка покупок пользователя A!.
Я могу понять, что файл cookie JSESSION не изменяется, когда пользователь A выходит из системы в том же браузере. По этой причине, если пользователь A входит в приложение с помощью другого браузера, у него нет тех же данных сеанса, файл cookie JSESSION отличается.
Я использую свой собственный обработчик успеха аутентификации для входа и выхода.
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/index.html" access="permitAll"/>
<form-login login-page="/index.html"
default-target-url="/index.html"
authentication-success-handler-ref = "loginSuccessHandler"
/>
<logout invalidate-session="false" logout-url="/logout" success-handler-ref="logoutSuccessHandler" />
<!-- <logout invalidate-session="false" success-handler-ref="logoutSuccessHandler" /> -->
</http>
И да, использование invalidate-session = "true" может быть краткосрочным решением, но в этом случае я не могу использовать данные, сохраненные в сеансе.
Что я хочу, так это чтобы пользователь UserA входил в браузер, сохранял некоторые данные в сеансе (список покупок), а затем выходил из системы, чтобы у UserB был свой собственный сеанс, вместо использования сеанса UserA, я подозреваю, что ответ находится в назначении нового cookie для userB, но также для назначения старого cookie для UserA.