Я столкнулся с проблемой, когда Spring Security не позволяет мне создать Cook ie, который будет хранить учетные данные пользователя после входа в систему. Я следовал этому учебнику
Я проверил несколько браузеров на случай, если браузер не позволит мне сохранить повар ie.
Существует только повар JSESSIONID ie
WebSecurityConfig.java
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserDetailsServiceImpl userDetailsService;
@Autowired
private DaoAuthenticationProvider authProvider;
@Bean
public DaoAuthenticationProvider authProvider() {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService);
authProvider.setPasswordEncoder(passwordEncoder());
return authProvider;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authProvider());
auth.userDetailsService(userDetailsService);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/", "/home", "/register", "/webjars/**","/forgot-password","/reset-password","/confirm-reset").permitAll()
.anyRequest().authenticated() // Każda inna podstrona wymaga autoryzacji
.and()
.formLogin()
.loginPage("/login")
.usernameParameter("email")
.loginProcessingUrl("/login")
.permitAll()
.and()
.logout()
.deleteCookies("JSESSIONID")
.permitAll()
.and()
.rememberMe()
.key("uniqueAndSecret")
.userDetailsService(userDetailsService)
;
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
login.html
<div layout:fragment="form" layout:decorate="~{layouts/entry}">
<form th:action="@{/login}" method="post">
<div><label> Email : <input type="email" name="email"/> </label></div>
<div><label> Password: <input type="password" name="password"/> </label></div>
<div><label><input type="checkbox" name="remember-me" /><span>Remember me</span></label></div>
<div><input type="submit" value="Sign In"/></div>
</form>
<a href="/forgot-password">Forgot Password?</a>
</div>
Спасибо за любые мысли!