SpringBootJpa 개발 | 9 DAY

하다가 막히는 부분이나 알아야 할 사항, 혹은 버전의 문제 등을 적기 위한 간단한 노트이며

이는 공부용 소스이기 때문에 소스에 주석을 달아가며 설명을 적어뒀습니다.
따라서 해당 날짜의 소스를 보며 노트를 참고하는 식으로 봐야합니다.

소스는 깃헙에 올려놓았습니다.

Remember Me

Remember Me를 사용하기 전엔 JSession이라는 것을 사용해서 로그인 정보를 저장하곤 했습니다.

👿 JSession의 세션 유지시간이 정해져있다.

🔑 해결법

How to use

spring-sercurity 설정 파일에 아래와 같이 http.rememberMe를 설정하면 되는데..

@Override
protected void configure(HttpSecurity http) throws Exception{
	http.rememberMe()  
	    .userDetailsService(accountService)  
	    .tokenRepository(tokenRepository());
}

@Bean  
public PersistentTokenRepository tokenRepository(){  
  JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();  
  jdbcTokenRepository.setDataSource(dataSource);  
  return jdbcTokenRepository;  
}

tokenRepository에서 사용되는 JdbcTokenRepositoryImpl 를 열어보면 아래와 같은 DDL이 있습니다.

create table persistent_logins 
(
	username varchar(64) not null
	, series varchar(64) primary key
	, token varchar(64) not null
	, last_used timestamp not null
)

현재 JPA를 설정없이 인메모리 디비를 사용중이므로 엔티티 정보를 보고 테이블을 자동생성 하므로 위 테이블에 해당하는 엔티티를 추가합니다.

RememberMe 사용시 꼭 필요한 form 데이터입니다!

<div class="form-group form-check">  
  <input type="checkbox" class="form-check-input" id="remeberMe" name="remeber-me" checked>  
  <label class="form-check-label" for="remeberMe" aria-describedby="rememberMeHelp">로그인유지</label>  
</div>