본문 바로가기
SpringSecurity

9. Spring Security의 로그아웃 처리, 세션 관리, 자동 로그인 유지 여부

by Developer_TaeJong 2025. 6. 13.

🚪 로그아웃 처리와 인증 흐름 마무리

로그인 기능을 구현했다면, 사용자가 명확하게 로그아웃할 수 있도록 처리해야 합니다.
이번 글에서는 Spring Security의 로그아웃 설정, 세션 종료, 리디렉션 처리 등을 깔끔하게 정리합니다.

✅ 1. 기본 로그아웃 흐름

Spring Security는 별도 설정 없이도 기본적으로 다음 경로로 로그아웃 처리를 지원합니다.

  • 로그아웃 요청 URL: /logout
  • 로그아웃 성공 시: /login?logout
  • 세션 무효화: 자동 처리됨 (HttpSession.invalidate())

✅ 2. 로그아웃 설정 예시

SecurityConfig.java 내 설정 예시:

.logout(logout -> logout
    .logoutUrl("/logout")
    .logoutSuccessUrl("/login?logout")
    .invalidateHttpSession(true)
    .deleteCookies("JSESSIONID")
)

🔍 주요 옵션 설명

옵션 설명
logoutUrl 로그아웃을 처리할 경로 지정
logoutSuccessUrl 로그아웃 후 이동할 경로
invalidateHttpSession(true) 세션 무효화 (로그인 정보 제거)
deleteCookies("JSESSIONID") 브라우저 쿠키 삭제 (선택)

✅ 3. 로그아웃 링크 만들기

<a href="/logout">로그아웃</a>
기본 GET 방식은 허용되지 않기 때문에, 아래처럼 POST 또는 CSRF 토큰 포함한 폼 방식으로 로그아웃 요청을 보내야 함
<form th:action="@{/logout}" method="post">
  <button type="submit">로그아웃</button>
</form>

✅ 4. 로그인 유지(자동 로그인) 설정

로그인 유지(remember-me) 기능을 사용하고 싶다면 다음과 같은 설정을 추가할 수 있습니다:

.rememberMe(remember -> remember
    .key("my-remember-key")
    .rememberMeParameter("remember-me")
    .tokenValiditySeconds(604800) // 7일
)
  • HTML 폼에 체크박스 추가:
<input type="checkbox" name="remember-me"> 로그인 유지
  • 이 설정을 통해 브라우저를 닫아도 쿠키를 통해 로그인 상태 유지 가능

✅ 5. 전체 인증 흐름 요약

단계 설명
회원가입 사용자 정보 DB 저장 (비밀번호 암호화)
로그인 세션 기반 인증 / OAuth2 소셜 로그인
인가 처리 권한(Role)에 따라 접근 제어
사용자 정보 사용 마이페이지, 프로필 수정
로그아웃 세션 제거 및 리디렉션
자동 로그인 (선택) remember-me 쿠키로 로그인 유지

✅ 마무리

지금까지 Spring Security를 사용하여 회원가입, 로그인, 권한 제어, 소셜 로그인, 로그아웃까지 전체 인증 흐름을 구성해봤습니다.

이 시리즈를 통해 보안이 중요한 웹 애플리케이션에서 사용자 인증을 안전하고 유연하게 구현하는 방법을 단계적으로 배울 수 있었습니다.

👉 다음(마지막) 글에서는 "실무 팁, 트러블슈팅, 추천 설정 모음" 을 정리합니다.