스프링 부트 보안을 사용하여 remember-me를 구현하고 내 테이블 persistent_logins (사용자 이름, 시리즈, 토큰, last_used)에 데이터를 저장하고 브라우저의 코키에서 찾을 수 있도록 노력했습니다.Remember-me가 작동하지 않음
@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;}
이 :
이 내 SecurityConfigWeb.java입니다 : 내가 내 브라우저에서 JSESSIONID를 삭제하고 그것을 페이지에 로그인 할 수있는 브라우저 리디렉션을 새로 고침과 같은 페이지에 아직도 할 때 내 문제입니다 기억을위한 내 login.html은 다음과 같습니다.
<div class="checkboxDiv">
<input type="checkbox" name="remember-me" value="true"> <label class="check" for="checkbox">Stay Logged In</label>
</div>
도움이됩니다. 미리 감사드립니다
당신은 단지 나를 위해 pattern3 사용할 수 기억하십시오. 귀하의 보안 설정 이상한 그냥 모든 전화를 1 체인에 ... –
미안 해요 M.Deinum 당신이 내가이 일을해야 의미하지 않습니다 : http.authorizeRequests(). antMatchers (Constants.PATTERN1) .permitAll(). 그리고() .rememberMe(). rememberMeServices (rememberMeServices()); http.authorizeRequests(). antMatchers (Constants.PATHPATTERN2) .permitAll().(). rememberMe(). rememberMeServices (rememberMeServices()); http.authorizeRequests(). antMatchers (Constants.PATHPATTERN3) .permitAll().(). rememberMe(). rememberMeServices (rememberMeServices()); ??? –
보안 설정을위한 체인이 하나도 없어 ... –