cot_shaurma
@cot_shaurma
Java и всего понемногу

Как реализовать «Запомнить меня» с кастомным контроллером аутентификации в Spring Boot?

В приложении сессии сохраняются в 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?
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы