Printemps de sécurité: Supprimer le cookie de déconnexion
J'utilise la suite de la configuration de sécurité de mon Ressort de démarrage de l'app:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/login").permitAll()
.and()
.authorizeRequests()
.antMatchers("/signup").permitAll()
.and()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.logout().logoutUrl("/logout").logoutSuccessUrl("/login").deleteCookies("auth_code").invalidateHttpSession(true)
.and()
//We filter the api/signup requests
.addFilterBefore(
new JWTSignupFilter("/signup", authenticationManager(),
accountRepository, passwordEncoder),
UsernamePasswordAuthenticationFilter.class)
//We filter the api/login requests
.addFilterBefore(
new JWTLoginFilter("/login", authenticationManager()),
UsernamePasswordAuthenticationFilter.class)
//And filter other requests to check the presence of JWT in
//header
.addFilterBefore(new JWTAuthenticationFilter(userDetailsServiceBean()),
UsernamePasswordAuthenticationFilter.class);
}
Quand je fais la déconnexion, je veux supprimer le cookie qui a été défini lors de la connexion. J'utilise deleteCookie
, mais dans l'en-tête il n'y a pas de notion de supprimer le cookie qui a été défini lors de la connexion. Pourquoi ?
Comment dois-je dire au navigateur pour supprimer le cookie ?
Droit maintenant, l'en-tête de la réponse contient :
Set-Cookie →JSESSIONID=E4060381B435217F7D68EAAE82903BB0;path=/;Secure;HttpOnly
Dois-je définir le délai d'expiration du cookie à une date après la date actuelle ?
- Pour info vous pouvez regarder en
Clear Site Data
en-tête, vous pourriez trouver cette réponse utile stackoverflow.com/a/54949089/1225551
Vous devez vous connecter pour publier un commentaire.
Que vous ne devez pas supprimer le cookie. Une fois que la session a été fermée par le serveur, le cookie ne peut pas être utilisé de toute façon, et il sera remplacé si la personne retourne. Juste le laisser expirer normalement (par défaut, lorsque le navigateur est fermé).
JSESSIONID
utilisé côté client ? si le client incluent explicitement dans l'en-tête pour chaque demande ?Ajouter
JSESSIONID
dans le.deleteCookies("auth_code", "JSESSIONID")
.auth_code
. Pour supprimer un cookie à partir du côté serveur, dois-je le mettre de son délai d'expiration pour un certain temps dans le passé et de le mettre de nouveau ? ou deleteCookies est assez bon ? Il n'y a rien sur l'en-tête qui indique au navigateur pour supprimer le cookie.deleteCookies
que cookie est installé un maxAge de 0 par la CookieClearingLogoutHandler dans l'en-tête de réponse grepcode.com/file/repo1.maven.org/maven2/....logout().deleteCookies("JSESSIONID", "JWT").logoutSuccessUrl("/index.html") .clearAuthentication(true).invalidateHttpSession(true)
rediriger vers successUrl va, mais les cookies ne sont pas effacés ... quelle pourrait être la raison?