Muszę usunąć plik cookie JSESSIONID, gdy użytkownik się wylogowuje. Aby to zrobić Dodałem następującej konfiguracji do mojego config Bezpieczeństwo:SpringSecurity: nie można usunąć JSESSIONID
<http>
<form-login login-page="/login*" authentication-failure-url="/login?try_again" />
<http-basic />
<logout logout-url="/logout" delete-cookies="JSESSIONID" />
<session-management invalid-session-url="/timeout" />
<intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
...
</http>
ale zamiast być usunięte, plik cookie jest po prostu stał duplikowane:
więc nadal przekierowuje przeglądarkę do adresu URL "/ timeout".
Starałem się śledzić, co dzieje się za pomocą Narzędzia dla programistów w przeglądarce Chrome, a okazało się, że plik ten ustawia się z tego nagłówka odpowiedzi:
Set-Cookie:JSESSIONID=CFF85EA743724F23FDA0317A75CFAD44; Path=/website/; HttpOnly
i usuwa z tego nagłówka odpowiedzi:
Set-Cookie:JSESSIONID=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/website
Nie jestem pewien, ale wygląda na to, że powodem jest pole "Ścieżka" tych nagłówków: w pierwszym wskazuje na "/ witryna /", aw drugim wskazuje na " /stronie internetowej".
Czy to jest przyczyna opisanych problemów? Jeśli to nie jest powód (lub nie jedyny powód), jaki jest inny powód (przyczyny)? Jak mam naprawić ten problem?
Zobacz http://static.springsource.org/spring-security/site/docs/3.2.x/reference/springsecurity-single.html#ns-session- mgmt (sekcja 3.3.3) ... Niestety nie można zagwarantować, że będzie działać z każdym kontenerem serwletu, więc będziesz musiał przetestować go w swoim środowisku. Zobacz także powiązany przypis. – Ritesh