사내 프로젝트 진행 중 로그인한 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이 추가되어있다.
참고