私はスプリングブートセキュリティを使用してremember-meを実装し、テーブルpersistent_logins(username、series、token、last_used)にデータを格納し、ブラウザのコックで見つけようとしました。私の問題は、私は私のブラウザからJSESSIONIDを削除し、それをブラウザリダイレクトを更新ページにログインすると、同じページにはまだないときである。Remember-meが動作しない
これは私のSecurityConfigWeb.javaです:
@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;}
と、この私のlogin.html私のために:
助けてください。事前に感謝します
あなたは私がパターン3を有効にしていることを覚えています。あなたのセキュリティ設定は奇妙なもので、1つの呼び出しですべてをチェーンしています... –
申し訳ありませんM.Deinum私はこれを行う必要があります:http.authorizeRequests()。antMatchers(Constants.PATTERN1).permitAll()。 ().rememberMe()。rememberMeServices(rememberMeServices()); rememberMeServices(rememberMeServices()); http.authorizeRequests()。antMatchers(Constants.PATHPATTERN2).permitAll()。および()。rememberMe()。 rememberMeServices(rememberMeServices()); http.authorizeRequests()。antMatchers(Constants.PATHPATTERN3).permitAll()。および()。rememberMe()。 ??? –
セキュリティを設定するチェーンが1つありません... –