Good Morning

Spring MVC에서 로그아웃 기능 구현 시 흔히 발생하는 오류와 해결 방법 본문

Back-End/Spring

Spring MVC에서 로그아웃 기능 구현 시 흔히 발생하는 오류와 해결 방법

욘쥰 2024. 7. 31. 23:42

Spring MVC를 사용하여 로그아웃 기능을 구현하면서 겪을 수 있는 흔한 오류와 그 해결 방법에 대해 이야기해보려고 합니다.

문제 상황

최근 프로젝트에서 로그아웃 기능을 구현하던 중, 다음과 같은 에러 메시지를 마주쳤습니다:

JSP file [/WEB-INF/views/login/logout.jsp] not found

이 오류는 "/logout" 요청을 처리할 때 발생했으며, Spring이 "logout.jsp" 파일을 찾지 못해 발생한 것이었습니다.

원인 분석

문제의 원인을 찾기 위해 컨트롤러 코드를 꼼꼼히 살펴보았습니다. 그 결과, 다음과 같은 중요한 누락을 발견했습니다:

@GetMapping("/logout")
public String logout(HttpSession session) {
    // 1. 세션을 종료
    session.invalidate();
    // 2. 홈으로 이동
    return "redirect:/";
}

바로 @GetMapping("/logout") 어노테이션이 없었던 것입니다! 이 어노테이션이 없으면 Spring은 "/logout" 요청을 어떻게 처리해야 할지 모르게 되고, 결과적으로 "logout.jsp" 파일을 찾으려고 시도하게 됩니다.

해결 방법

해결 방법은 간단합니다. 컨트롤러 메소드에 @GetMapping("/logout") 어노테이션을 추가하면 됩니다:

@GetMapping("/logout")
public String logout(HttpSession session) {
    session.invalidate();
    return "redirect:/";
}

이렇게 수정하면:

  1. "/logout" GET 요청이 이 메소드에 정확히 매핑됩니다.
  2. 세션이 무효화되어 로그아웃이 정상적으로 처리됩니다.
  3. 사용자는 홈 페이지로 리다이렉트됩니다.