Remember-me в Spring Security не работает
Столкнулся со следующей проблемой: при попытке удаления JSESSIONID или перезапуске браузера, следующий запрос на сервер обнуляет remember-me Cookie и не подтверждает сессию.
http
.authenticationManager(authManager(http))
.authorizeHttpRequests()
.requestMatchers("/auth/sendCode", "/login").permitAll()
.requestMatchers("/api/*").hasAuthority("USER")
.anyRequest()
.authenticated()
.and()
.exceptionHandling()
.authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED))
.and()
.formLogin().passwordParameter("code").usernameParameter("email")
.successHandler((request, response, authentication) -> {
response.setStatus(HttpServletResponse.SC_OK);
}).failureHandler((request, response, exception) -> response.setStatus(HttpServletResponse.SC_UNAUTHORIZED))
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/")
.deleteCookies("JSESSIONID")
.and()
.rememberMe() .tokenRepository(persistentTokenRepository())
.userDetailsService(userDetailsService())
.alwaysRemember(true)
.tokenValiditySeconds(24*60*60*14)
.key("Mykey");
return http.build();
@Bean
public PersistentTokenRepository persistentTokenRepository(){
JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();
tokenRepository.setDataSource(dataSource);
return tokenRepository;
}
При запросе по любому из путей авторизованного пользователя выдаётся 401 из exceptionHandling(). В заголовках ответа приходит два Set-Cookie подряд:
Set-Cookie: remember-me=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
Set-Cookie: remember-me=aFRLMWhLYkhmNzVLMWh6M2I0b2ZYQSUzRCUzRDo2Snd1ZWFkcTFZRGlzZXp4RjAwRHlBJTNEJTNE; Max-Age=1209600; Expires=Thu, 29-Jun-2023 23:40:17 GMT; Path=/; HttpOnly
В БД таблица есть и каждый раз создаётся новый токен remember-me:
Пожалуйста, подскажите, в чём может быть проблема? UPD: Под следующим запросом я имею в виду тот запрос, который происходит после удаления JSESSION куки. Без её удаления всё работает штатно.