Я пишу WebApp с помощью Spring.Я создал пользовательский логин (почему это неважно), который работает.Тогда теперь я хочу добавить функцию запомнить меня.Мне удалось установить cookie, но теперь я не знаю, как автоматически войти в систему пользователя.Так как мне войти в систему пользователя, когда он снова заходит на сайт?
Вот мой метод аутентификации:
public boolean authenticate(String username, String password) {
try {
AuthenticatedUser user = authService.loadUserByUsername(username);
if (new BCryptPasswordEncoder().matches(password, user.getPassword())) {
Authentication auth = new UsernamePasswordAuthenticationToken(
user.getUsername(), user.getPassword(), user.getAuthorities());
rememberMeService.loginSuccess(request, response, auth);
SecurityContextHolder.getContext().setAuthentication(auth);
return true;
}
return false;
} catch (UsernameNotFoundException e) {
return false;
}
}
А вот моя веб-конфигурация:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/VAADIN/**", "/HEARTBEAT/**", "/UIDL/**", "/resources/**", "/manifest.json", "/icons/**",
"/images/**",
"/frontend/**",
"/webjars/**",
"/h2-console/**",
"/frontend-es5/**", "/frontend-es6/**",
"/signup", "/signup**", "/signup/**", "/")
.permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").permitAll()
.and()
.rememberMe().rememberMeServices(rememberMeService())
.and()
.logout().permitAll();
}
@Bean
public TokenBasedRememberMeServices rememberMeService() {
TokenBasedRememberMeServices tbrms =
new TokenBasedRememberMeServices("rememberMe", userDetailsService);
tbrms.setAlwaysRemember(true);
return tbrms;
}