커스터마이징4 - 자동로그인 ( remember-me ) 구현

hellas4·2019년 11월 12일
0

Spring Security

목록 보기
9/9
post-thumbnail

비교적 안전한 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키가 변경된다.

profile
Web 개발자 입니다.

0개의 댓글