개발자
안녕하세요 MSA아키텍처를 적용한 개인프로젝트 진행중에 궁금한 사항이 생겨서 글 작성합니다 회원정보 수정을 한 뒤 수정이 정상적으로 완료되었을 때 클라이언트에 완료되었다는 메세지와 함께 로그아웃 메서드를 실행시키고 싶어서 public interface IUserInfoService { @PostMapping(value = "security/v1/logout") void logout(); } 이렇게 서비스 인터페이스에 작성을 해두고 컨트롤러에서 userInfoService.logout(); 으로 호출하여 실행하는데 권장되는 방법인지, 더 좋은 방법이 있는지 궁금해서 질문드립니다
답변 1
안녕하세요! IUserInfoService 에 @PostMapping 어노테이션을 정의하신게, 혹시나 "security/v1/logout" 으로 요청이 전달되게끔 하시고자 한다면 의도하신 동작이 이루어지진 않을것으로 판단됩니다. 만약 제가 생각한게 맞다면, 의도하신 동작은 redirect 를 통해 해결해볼 수 있지 않을까 합니다. Redirect 의 동작과 Spring 에서 Redirect 를 어떻게 처리하는지 잘 정리한 블로그가 있어 공유드립니다. https://velog.io/@jcw1031/%EC%8A%A4%ED%94%84%EB%A7%81-Redirection 저의 짧은 지식이 부디 도움이 되시길 바랍니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 04월 24일
작성하신 방법은 무리가 없으며, 스프링에서 권장하는 방식 중 하나입니다. 서비스 레이어에서 로직을 처리하는 것이 좋습니다. 따라서 사용자 정보를 업데이트한 후 로그아웃하는 작업은 서비스 단에서 수행하는 것이 올바릅니다. 하지만, logout() 메소드는 보통 인증과 관련된 부분으로 취급되기 때문에 별도의 인증 서비스 클래스를 만들고 그곳에서 해당 메소드를 구현하는 것이 일반적입니다. 이 경우에는 `IAuthService` 같은 이름의 인터페이스를 생성하고 그 안에 `logout()` 메소드를 정의할 수 있습니다. 또 다른 접근 방식으로는, 사용자 정보 수정 후 바로 로그아웃 시키는 대신 사용자에게 알림을 보내거나 화면 상에 메세지를 보여주어 사용자가 스스로 로그아웃 할 수 있도록 하는 것입니다. 이렇게 하면 시스템이 강제적으로 로그아웃을 시키는 것보다 사용자 경험을 더욱 향상시킬 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!