[JAVA] 66. SecurityConfig 커스터마이징

윤설안's avatar
Jul 26, 2025
[JAVA] 66. SecurityConfig 커스터마이징
SecurityConfig에서 세션 없을 경우 내가 만든 로그인 페이지로 이동 설정

어떤 상황?

  • 사용자가 인증되지 않은 상태(로그인하지 않았거나, 세션 만료 등)에서 보호된 URL(/main, /mypage, 등)에 접근할 경우
  • 기본 설정에서는 Spring Security가 자동으로 제공하는 기본 로그인 페이지("/login")로 리다이렉트됨
  • 하지만 우리는 자체 제작한 로그인 페이지가 있으므로 해당 URL로 리다이렉트되도록 설정이 필요함

SecurityConfig에서 커스터마이징한 부분

http.formLogin(form -> form .loginPage("/login-form") // 인증 안된 경우 이동할 나만의 로그인 페이지 .loginProcessingUrl("/login") // 로그인 form의 action .defaultSuccessUrl("/main") // 로그인 성공 시 이동할 페이지 );

이 설정이 중요한 이유

1. 기본 동작은 우리가 원하는 UX를 보장하지 않음

  • Spring Security는 인증되지 않은 요청에 대해 자동으로 기본 로그인 폼을 보여줌
  • 하지만 이 기본 폼은 우리가 커스터마이징한 페이지가 아니므로 UI/UX가 깨짐

2. 세션이 없을 경우 invalidSessionUrl 을 통해 명시적으로 처리

  • 사용자가 로그인 이후 일정 시간 활동이 없거나 브라우저 종료 등으로 세션이 사라졌다면
  • 다시 보호된 페이지에 접근 시 예외 발생 → 이때 우리가 원하는 에러 안내 페이지 or 로그인 페이지로 이동시켜야 함

3. 인증 안된 경우에도 우리가 만든 페이지로 유도

  • 사용자가 /main으로 직접 접근해도 SecurityConfig 덕분에 /login으로 유도됨
  • 즉, Spring Security의 필터 체인이 요청을 가로채고, SecurityContextHolder에 인증 정보가 없을 경우 커스텀 페이지로 보내줌
 
Share article

An's Blog