Es ist mir gelungen, remember-me mit Spring-Boot-Sicherheit zu implementieren und Daten in meiner Tabelle persistent_logins (Benutzername, Serie, Token, last_used) zu speichern und in meinem Browser in Coockies zu finden. mein Problem ist, wenn ich die JSESSIONID aus meinem Browser löschen und den Browser Umleitung aktualisieren Sie die Seite und nicht noch in der gleichen Seite anmelden:Remember-me funktioniert nicht
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/sentEmail").permitAll();
http.authorizeRequests().antMatchers("/contactUs").permitAll();
http.authorizeRequests().antMatchers("/reset").permitAll();
http.authorizeRequests().antMatchers(Constants.PATTERN1).permitAll();
http.authorizeRequests().antMatchers(Constants.PATHPATTERN2).permitAll();
http.authorizeRequests().antMatchers(Constants.PATHPATTERN3).permitAll().and().rememberMe().rememberMeServices(rememberMeServices());
http.authorizeRequests().anyRequest().authenticated().and().formLogin().loginPage(Constants.URL_PATH).successHandler(this.authSuccess).failureHandler(this.authFailure).permitAll();
http.authorizeRequests().anyRequest().authenticated().and().logout().logoutSuccessHandler(this.logoutSuccess).deleteCookies("JSESSIONID").invalidateHttpSession(false).permitAll();
http.csrf().disable();}
@Bean
public BCrypt bCryptPasswordEncoder() {
return new BCrypt();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
}
@Bean
public AbstractRememberMeServices rememberMeServices() {
PersistentTokenBasedRememberMeServices rememberMeServices =
new PersistentTokenBasedRememberMeServices("AppKey",userDetailsService(),persistentTokenRepository());
rememberMeServices.setParameter("rememberMe");
rememberMeServices.setAlwaysRemember(true);
rememberMeServices.setCookieName("javasampleapproach-remember-me");
rememberMeServices.setTokenValiditySeconds(24 * 60 * 60);
return rememberMeServices;
}
@Bean
public PersistentTokenRepository persistentTokenRepository() {
JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();
tokenRepository.setDataSource(dataSource);
return tokenRepository;}
und diese:
dies mein SecurityConfigWeb.java ist ist mein login.html für remember-me:
<div class="checkboxDiv">
<input type="checkbox" name="remember-me" value="true"> <label class="check" for="checkbox">Stay Logged In</label>
</div>
Irgendwelche Hilfe. Vielen Dank im Voraus
Sie haben nur erinnern mich aktiviert für pattern3. Ihre Sicherheitskonfiguration ist komisch, ketten Sie alles in 1 Anruf ... –
Entschuldigung M.Deinum ich verstehe Sie nicht, ich meine, ich sollte dies tun: http.authorizeRequests(). AntMatchers (Constants.PATTERN1) .permitAll(). Und() .rememberMe(). rememberMeServices (rememberMeServices()); http.authorizeRequests(). AntMatchers (Konstanten.PATHPATTERN2) .permitAll(). Und(). RememberMe(). RememberMeServices (rememberMeServices()); http.authorizeRequests(). AntMatchers (Konstanten.PATHPATTERN3) .permitAll(). Und(). RememberMe(). RememberMeServices (rememberMeServices()); ??? –
Nein, Sie sollten 1 Kette haben, um Ihre Sicherheit zu konfigurieren ... –