В приложении сессии сохраняются в Redis, авторизация на основе cookie. Я реализовал кастомный контроллер для аутентификации и получения cookie:
@PostMapping(value = "/login", consumes = MediaType.APPLICATION_JSON_VALUE)
public String login(@RequestBody LoginDataTo loginData) {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
loginData.getEmail(),
loginData.getPassword());
Authentication authentication = this.authenticationManager.authenticate(token);
SecurityContextHolder
.getContext()
.setAuthentication(authentication);
return "OK";
}
Вот LoginDataTo:
@Value
public class LoginDataTo {
String email;
String password;
boolean rememberMe;
}
Конфигурация:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.rememberMe().tokenValiditySeconds(REMEMBERED_SESSION_TIMEOUT).and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED);
http
.httpBasic().disable()
.formLogin().disable()
.csrf().disable()
.cors().disable();
http
.authorizeRequests()
.antMatchers("/login").anonymous()
.antMatchers("/api/v1/profile").authenticated()
.antMatchers("/api/v1/students/**").hasRole(Role.STUDENT.name())
.anyRequest().authenticated();
}
Теперь я пытаюсь реализовать логику remember-me. Я не очень понимаю, как это сделать с использованием кастомного контроллера аутентификации. Получается, я должен вытащить в нём rememberMe из полученного LoginDataTo и... И дальше я совершенно не представляю, куда его засунуть. Как мне в данном случае реализовать функциональность rememberMe?