스프링 시큐리티의 경우 ‘remember-me’ 기능을 메모리상에 처리하거나, 데이터베이스를 이용하는 형태로 약간의 설정만으로 구현이 가능하다.

security-context.xml에서는 <security:remember-me>태그를 이용해 기능을 구현한다.

주요 속성

📱 데이터 베이스를 이용하는 자동 로그인

가장 많이 사용되는 방식은 로그인이 되었던 정보를 데이터베이스에 기록해 두었다가 재방문 시 세션에 정보가 없으면 데이터베이스를 조회해서 사용한다.

서버의 메모리상에만 저장하는 방식보다 좋은 점은 데이터베이스에 정보가 공유되기 때문에 좀 더 안정적으로 운영이 가능하다.

-- 스프링 시큐리티의 공식 문서에 나오는 자동 로그인 테이블
CREATE TABLE persistent_logins
(
    username VARCHAR2(64) NOT NULL,
    series VARCHAR2(64) PRIMARY KEY,
    token VARCHAR2(64) NOT NULL,
    last_used timestamp NOT NULL
);
<!--security-context.xml 추가-->
<security:remember-me data-source-ref="dataSource" token-validity-seconds="604800" />

자동 로그인 설정

<!--로그인 페이지에 추가-->
<input type="checkbox" name="remember-me"> Remember Me

로그아웃 시 쿠키 삭제

<!--security-context.xml delete-cookies 속성 추가-->
<security:logout logout-url="/customLogout" invalidate-session="true" delete-cookies="remember-me, JSESSION_ID"/>