비교적 안전한 DB연동 방식 ( Persistent Token Approach )의 자동로그인, remember-me를 구현해보도록 하겠습니다.

테이블 생성

CREATE TABLE persistent_logins (
    username varchar(64) not null,
    series varchar(64) not null,
    token varchar(64) not null,
    last_used timestamp not null,
    PRIMARY KEY (series)
);

자동로그인 버튼 생성

loginPage.jsp

<form action="${pageContext.request.contextPath}/login" method="post">

    <input type="text" name="loginId" placeholder="ID">

    <input type="password" name="loginPwd" placeholder="Password">

    <input name="${_csrf.parameterName}" type="hidden" value="${_csrf.token}"/>

    <input name="remember-me" type="checkbox" />자동 로그인

    <button type="submit">로그인</button>

</form>

security 설정

security-context.xml

        <http auto-config="true" use-expressions="true">
            <intercept-url pattern="/userPage" access="hasRole('ROLE_USER')"/>
            <intercept-url pattern="/**" access="permitAll"/>

            <form-login
                username-parameter="loginId"
                password-parameter="loginPwd"
                login-processing-url="/login"
                login-page="/loginPage"
                default-target-url="/"
                />

            <logout logout-url="/logout" logout-success-url="/" />    

            <remember-me data-source-ref="dataSource" 
            remember-me-parameter="remember-me" 
            token-validity-seconds="604800"/>

        </http>

혹여나 마이페이지등 중요 페이지를 접근시에는 비밀번호를 한번더 물어본다던지
추가적인 사용자확인 과정을 거치는것을 추천합니다.


이제 자동로그인 클릭 후 로그인시에 자동으로 DataBase에 token키와 series키가 생성되며,
이러한 키를 이용하여 다음 로그인시에도 자동으로 로그인된다.

series키로 유저를 구분하며, 자동로그인설정후 로그인시마다, 접근시간과, token키가 변경된다.