사내 프로젝트 진행 중 로그인한 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이 추가되어있다.
참고
'Next.js' 카테고리의 다른 글
next.config.js 정리 (0) | 2024.09.10 |
---|---|
CSR, SSR, CORS 에러 (2) | 2024.09.02 |
Next.js에 mdx파일 적용하기 (0) | 2024.08.30 |
Next.js14 정리(2) (0) | 2024.08.28 |
Next.js 14 정리(1) (0) | 2024.08.28 |