Spring security/01.Security

11. RememberMe 서비스

  • -

이번 포스트에서는 RememberMe 서비스에 대해 살펴보자.

Remember-Me 처리

Remember-Me는 로그인 정보를 쿠키에 저장해 두었다가 나중에 사용하는 기법이다. 쿠키를 안전하게 사용하려면 암호화해야 하고 로그아웃 할 때 쿠키 삭제 등 관리가 필요한데 Spring Security에서는 이 과정을 아주 단순히 처리할 수 있다.

Remember-Me 기능을 이용하기 위해서는 화면단에 단지 remember-me라는 이름의 checkbox가 추가되면 된다.

{{^SPRING_SECURITY_CONTEXT}}
<form action="/login" method="post">
    {{>include/csrf}} <!-- csrf 토큰을 위한 히든 input 필드 -->
    <label for="username">아이디:</label>
    <input type="text" id="username" name="username" required />
    <label for="password">비밀번호:</label>
    <input type="password" id="password" name="password" required />
    <label for="remember-me">로그인 유지:</label>
    <input type="checkbox" id="remember-me" name="remember-me" />
    <button type="submit">로그인</button>
</form>
{{/SPRING_SECURITY_CONTEXT}}

 

HttpSecurity 설정

RememberMe 기능 역시 login, logout 처럼 HttpSecurity#rememberMe()에  RememberMeConfigure를 커스터마이징해서 사용한다.

메서드명 설명 기본 값
rememberMeParameter 체크박스의 name 속성 remember-me
rememberMeCookieDomain() 사용할 도메인을 설정한다. 프로젝트 도메인
rememberMeCookieName() 저장될 쿠키의 이름을 설정한다. remember-me
tokenValiditySecond() 쿠키 유지 기간(초단위) 2주 = 86400
useSecureCookie() https에서만 사용할 것인지 설정 false

 

대부분 기본 값을 쓰면 될것 같다. 다음은 remember-me를 사용하면서 유지기간을 1분으로 설정한 예이다.

http.rememberMe(rememberMe -> rememberMe.tokenValiditySeconds(60)); // 1분 테스트용

 

동작 확인

이제 login에 성공하면 remember-me라는 이름으로 쿠키가 설치되는 것을 확인할 수 있다.

브라우저를 닫은 후 다시 localhost:8080/admin 페이지를 요청하면 당분간은 login 폼으로 진행하지 않고 바로 admin 페이지가 서비스 된다.

이 상황에서 로그아웃을 하면 자동으로 쿠키를 삭제해주고 로그인 유지도 해제된다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.