해당 글을 작성할 때 각 라이브러리 버전입니다.
Next.js : 13.3.4
TypeScript : 5.0.4
Next-Auth : 4.21.1
Next.js를 하면서 Next-Auth 라이브러리를 사용하면 소셜로그인을 정말 쉽게 구현할 수 있다.
소셜 로그인을 구현하는 만큼 일반 로그인도 쉽게 구현할 수 있는데, 구현할 때 CredentialsProvider를 사용하게 된다.
로그인 방식에는 크게 두 가지 방식이 있는데, 첫 번째는 Session을 이용하는 방법, 두 번째는 JWT를 사용하는 방법이 있다. CredentialsProvider을 사용하게 되면 무조건 JWT방식을 사용하게 되니 Session을 이용해서 만들고 싶은 분은 Next-Auth 삽질할 필요 없이 따로 개발을 하면 될 거 같다.
🔧 callbacks 옵션
📌 jwt
jwt 만들 때 실행되는 옵션
📌 session
유저 session이 조회될 때마다 실행되는 옵션
💡 사용예시
callbacks: {
jwt: async ({ token, user }) => {
if (user) {
// token에 내용을 실어보낼 수 있음
// 아래 코드 같은 경우 name과 email을 받을 수 있음
token.user = {};
token.user.name = user.name;
token.user.email = user.email;
}
return token;
},
session: async ({ session, token }) => {
// session 조회 할 때 아래 코드 같이 설정할 경우 토근에 보낸 값을 전부 볼 수 있음
session.user = token.user;
return session;
},
},
💡 타입스크립트 적용
// @/types/next-auth.d.ts 경로로 폴더 및 파일 생성후,
// next-auth.d.ts 파일에 아래와 같이 코드 작성
import { JWT } from "next-auth/jwt";
declare module "next-auth/jwt" {
interface JWT {
// 위 코드예시에서 name과 email을 보낸것들에 대한 값에 대해 타입설정을 해준다
user?: {
name?: string | undefined | null;
email?: string | undefined | null;
};
}
}
타입에 대해서 빨간 줄이 계속 생겨 공식문서를 뒤적거리며 찾게 된 방법이다. 타입스크립트를 적용하면서 드는 생각은 정말 유용한 대신 타입을 찾는 데 있어서 시간이 제법 걸린다는 것이다. 하지만 이미 그 매력에 빠져서 나올 순 없을 거 같다...
⭐ 해당 내용에 대해 빠르게 보고 싶으신 분들을 위한 링크
'Next.js' 카테고리의 다른 글
[Next.js14.0.2] Yarn berry v4 적용 후 체감 성능 비교(feat. Yarn berry v3, yarn, 배포: vercel) (1) | 2023.11.28 |
---|---|
[Error] Next.js14.0.3에서 three/drei 라이브러리 에러 (0) | 2023.11.27 |
Next.js 13 에서 NextResponse 사용 방법 (0) | 2023.05.17 |
댓글