관리 메뉴

가끔 보자, 하늘.

next-auth CredentialsProvider 에 추가 정보를 session.user에 추가하기 본문

개발 이야기/개발 및 서비스

next-auth CredentialsProvider 에 추가 정보를 session.user에 추가하기

가온아 2022. 10. 27. 18:37

[...nextaut].js 에 아래와 유사한 코드가 있을 겁니다. callback 함수들 중 jwt, session을 이용해 추가 정보를 설정합니다.

하단의 원본 링크도 같이 읽어보세요. 정리해서 올릴 내용은 수두룩한데 (이 나이를 먹고도.. ) 마음만 급해서 잘 안되네요. 예전 정리했던 짧은 샘플 코드 하나라도 올려봅니다.

async authorize(credentials, req) {
 .
 .
 .
 return {email: data.email, myname:'test'}   // 리턴할 때 myname에 임의의 정보 추가
 .
 .
 .
 },
 callbacks: {
     async jwt({token, user}){
      user && (token.user = user) // authorize에 리턴했던 값이 user 정보에 있면 token에 추가.
      return Promise.resolve(token);
    },
    async session({session, token}){
      // token에 포함된 user 정보를 session.user에도 추가
      // 이후 client side의 session.user에서 token.user 정보 확인 가능.
      session.user = token.user
      if(session.user != null && token.hasAcceptedTerms != null){
        session.user.hasAcceptedTerms = token?.hasAcceptedTerms;
      }
      return Promise.resolve(session);
    }
 }

(* 참고 원문 링크 : https://next-auth.js.org/configuration/callbacks)

반응형