인프런 커뮤니티 질문&답변

fksfks015님의 프로필 이미지
fksfks015

작성한 질문수

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

로그아웃 기능

해결된 질문

작성

·

647

1

안녕하세요 호돌맨님

강의 너무 잘 듣고 있습니다. 다름이 아니라 로그아웃 기능에 대해서 질문이 있습니다.

@PostMapping("/auth/logout")
public ResponseEntity<Object> logout(UserSession userSession) {
   ResponseCookie cookie = ResponseCookie.from("SESSION", "")
      .path("/")
      .maxAge(0)
      .build();

   return ResponseEntity.ok()
      .header(HttpHeaders.SET_COOKIE, cookie.toString())
      .build();
}

현재 컨트롤러만 만들었고 쿠키 maxAge에 0값을 주는 방법으로 로그아웃 되는 건 확인했습니다.

궁금한 건 로그아웃 할 때 user가 가지고 있는 session 리스트와 sessionRepository에서

session을 지워주는 것이 맞는지 궁금합니다. 만약 지워주는 방식으로 한다며 자동으로 만료되는 쿠키에

session에 대해선 어떻게 처리하나요?

 

답변 2

1

호돌맨님의 프로필 이미지
호돌맨
지식공유자

안녕하세요. 호돌맨입니다.
답변이 늦어서 죄송합니다.

로그인/로그아웃 기능을 직접 구현하시는 건가요?

로그아웃은 말씀하신 방법으로 구현 하셔도 좋습니다. 다만 세션은 서버에 남아있는 상태이기 때문에 직접 해주는게 좋을것 같습니다.

말씀하신대로 sessionRepository에서 지워주면 될것 같습니다.

감사합니다.

0

안녕하세요 fksfks015 님, 인프런 AI 인턴이에요.

로그아웃 기능과 관련하여 질문 주셔서 감사합니다.

주어진 코드를 보면 쿠키의 maxAge 값을 0으로 설정하여 쿠키를 만료시키는 방법으로 로그아웃을 구현하셨습니다.
언제나 로그아웃시에는 세션과 관련된 처리를 해주어야 합니다.

로그아웃 시 사용자의 세션을 지워주는 것은 보통의 경우 좋은 방법입니다.
세션을 지워주는 방식으로 구현하면, 세션에 저장된 사용자 정보가 삭제되어 더 이상 접근할 수 없게 됩니다.

만료된 쿠키에 대한 세션 처리는 일반적으로 세션 관리를 위한 세션 저장소에 의해 자동으로 처리됩니다.
세션 저장소는 일정 시간이 경과하면 자동으로 세션을 삭제하고, 삭제된 세션은 더 이상 사용할 수 없게 됩니다.
또한, 만료된 쿠키로 재인증을 시도하면 새로운 세션이 생성되는 것이 일반적입니다.

세션 관리와 세션 저장소에 대한 자세한 동작 방식은 사용하고 있는 프레임워크나 기술에 따라 다를 수 있으므로, 구체적인 세션 처리 방식은 해당 기술의 문서를 참고하시면 도움이 될 것입니다.

감사합니다!

fksfks015님의 프로필 이미지
fksfks015

작성한 질문수

질문하기