image

next-auth callbacks (session 값 추가)

태그
DevNext.js
상세설명next-auth session callbacks활용해 값 추가
작성일자2024.04.16

사내 프로젝트 진행 중 로그인한 user session에 값을 추가적으로 가져와야되서 next-auth의 callbacks에 대해 알아보았다.

일반적으로 클라이언트 페이지에서 useSession()을 활용해 data를 가져오면 expires와 user의 eamil, name 만 가져온다. 그래서 만약 그 외의 데이터가 필요하면 callbacks중 Session callback 을 활용해 데이터를 추가하면 된다. 세션 콜백은 세션이 확인될 때마다 호출된다.

session의 email과 token의 email이 같으면 session user 객체에 추가할 속성과 값을추가한다. (아래코드에서는 region을 추가했다.)

//api/auth/[...nextauth].ts

declare module "next-auth" {
  interface Session {
    user: {
      name: string;
      email: string;
      region?: string;
    };
  }
}

export default NextAuth({
	providers: [...],
	callbacks: {
    async session({ session, token }) {
      if (session.user.email === token.email) {
        const matchRegion = member.find(
          (x) => x.engName === token.email
        ).region;
        session.user.region = matchRegion;
      }

      return session;
    },
  },
});

그 후 클라이언트 페이지에서 로그인 후 useSession() 을 통해 data를 불러와 보면 user 객체 안에 region이 추가되어있다.

참고

https://next-auth.js.org/configuration/callbacks