next-auth + spring 로그아웃

김태규·2024년 12월 5일

Aper 프로젝트

목록 보기
2/4

next client & server, spring server 를 이용한 프로젝트입니다.
next-auth를 이용하여 nextClient-nextServer-springServer 구조로 로그인하도록 설계하였습니다.

서술

next-auth 에서는 signOut() 메소드를 통해 세션을 비울 수 있다. 그러나 이 메소드는 signIn()과 다르게 callback이 없는 '이벤트'이다. 따라서 authOption의 event 중 signOut 이벤트를 통해 처리할 수 있다.

// ...imports

export const authOptions: NextAuthOptions = {
  // ...codes
  events: {
    signOut: async () => {
      // 로그아웃 이벤트 발생 전, 서버도 로그아웃
      await serverAuth.post(API_PATH.AUTH.LOGOUT);
    },
  },
};

주석에서도 언급하였지만, events에서 정의한 함수의 실행 시점은 해당 이벤트의 발생 전이다. 로그아웃의 경우, 네트워크 오류로 spring 서버에서 로그아웃이 되지 않더라도, next-auth 서버 세션에서 정보를 삭제하므로써 실행이 가능하다. 이렇게 될 경우 spring 서버의 리소스를 낭비할 가능성이 있으나(그렇게 큰 낭비는 아니라고 생각한다), 사용자는 버튼을 누르자마자 로그아웃 되므로 훨씬 좋은 사용자 경험을 제공 할 수 있다.

profile
Frontend, Mobile Developer

0개의 댓글