p/MI1Khc
Opened this issue · 32 comments
Auth.js(NextAuth.js) 핵심 정리 | HEROPY.DEV
Auth.js(NextAuth.js)는 Next.js 프로젝트의 사용자 인증 및 세션 관리를 위한 라이브러리로 Google, GitHub 등의 다양한 인증 공급자를 지원하며, Next.js의 서버와 클라이언트 측 모두에서 인증 및 세션 관리를 손쉽게 처리할 수 있습니다.
안녕하세요, 작성해주신 글 잘 읽었습니다. 한 가지 궁금한 것이 있어 질문 드립니다.
제가 지금 next-auth v4를 next.js 14 환경에서 활용 중에 있습니다. 그 과정에서 credentialProvider를 활용해서 refresh token, access token을 적용하는 부분을 구현하고 있습니다.
질문 드리고 싶은 부분은 refresh token을 middleware에서 갱신을 해주고 싶어서 작업을 하던 와중에 middleware 쪽에서 update를 해주는 방식이 따로 지원 되는 것이 없다고 해서 혹시 이런 경우에 어떻게 처리를 하면 좋을 지 궁금합니다!
현재는 일단 클라이언트 쪽에서 next-auth session update를 이용해서 token 만료 여부를 보고 확인하는 방식으로 임시방편을 구성해뒀습니다!
네, 안녕하세요~😊
저도 v4는 세션을 직접 서버에서 갱신할 방법이 없는 걸로 알고 있네요.
v4 기준으로는 말씀하신 것처럼, 클라이언트에서 useSession().update()
로 갱신하는 게 맞는 방법으로 보는데요.
v5는 아직 베타 버전이지만, 서버에서 세션 갱신이 가능합니다. (글 내용을 업데이트했습니다)
만약 미들웨어에서 꼭 처리를 원하시면, next.js@14
를 사용하고 계시니까 next-auth@5
업데이트를 고려해 보시면 좋겠습니다.
답글 감사합니다. 비슷한 문제를 next auth github에서 많은 분들이 해결을 못하고 계신 것 같아서 질문드렸었는데 v5로 넘어가는게 최선인 거 같긴하네요. 작성해주신 글 읽고 한번 도전해봐도 좋을 것 같습니다! 좋은 글과 답변 감사합니다!
잘 읽었습니다. 공식문서를 읽어보기 전 auth JS의 사용 흐름을 크게 훑어보는데 아주 큰 도움이 되었네요. 친절한 글이에요!
안녕하세요 영웅님! 양질의 글 정말 감사드립니다. 현재 진행하고 있는 프로젝트의 인증 부분을 구현하는 중에 큰 도움을 받고 있습니다. ㅎㅎ
개인적으로 궁금한 부분을 여쭙자면, 현재 인증된 유저의 세션 만료여부를 판단하는 로직을 실행시키기 위해선1)jwt 콜백이 호출되었을 때 또는 2)미들웨어를 통해 다른 페이지로 접근할 때 트리거의 역할을 할 수 있는 것으로 이해하였는데 '한 페이지에서 계속 접속 중인 경우 주기적으로 세션 만료여부를 판단할 수 있는 방법'이 있는지 궁금합니다.
개인적으로는 setInterval 정도를 생각하였는데, RootLayout도 서버 컴포넌트로 사용하고 있어 어디서 적용해야할지, 맞는 방식인지 감이 잡히지 않네요 🥲
안녕하세요 영웅님! 양질의 글 정말 감사드립니다. 현재 진행하고 있는 프로젝트의 인증 부분을 구현하는 중에 큰 도움을 받고 있습니다. ㅎㅎ
개인적으로 궁금한 부분을 여쭙자면, 현재 인증된 유저의 세션 만료여부를 판단하는 로직을 실행시키기 위해선1)jwt 콜백이 호출되었을 때 또는 2)미들웨어를 통해 다른 페이지로 접근할 때 트리거의 역할을 할 수 있는 것으로 이해하였는데 '한 페이지에서 계속 접속 중인 경우 주기적으로 세션 만료여부를 판단할 수 있는 방법'이 있는지 궁금합니다.
개인적으로는 setInterval 정도를 생각하였는데, RootLayout도 서버 컴포넌트로 사용하고 있어 어디서 적용해야할지, 맞는 방식인지 감이 잡히지 않네요 🥲
@Jaeppetto
안녕하세요. 좋게 봐주셔서 감사합니다~😄
제 생각엔 세션 만료를 setInterval
로 확인하는 건 매우 비효율적일 듯해요.
그래서 로그인하거나 세션 인증 함수(auth
)를 호출할 때마다 만료 시간을 클라이언트에 저장(스토어, 스토리지 등)해서 확인하는 것도 좋을 듯하고요.
간단하게는 사용자의 페이지 이동에 맞게 인증 함수를 호출하면 충분하지 않을까 합니다.
도움이 될지 모르겠지만, 관련 내용을 반응형 세션 확인 부분에 추가했으니 확인해 보세요.
안녕하세요! 글을 정독하면서 많이 배우고 있습니다.
마지막 반응형 세션확인 부분에서 Error: headers was called outside a request scope
에러가 생기는데 혹시 아시는 부분이 있을까요?
안녕하세요! 한국어로 정리가 잘된 글을 봐서 큰 도움 받고 있습니다.
auth.js v5 버전을 활용해서 비슷한 방법으로 로그인 관리작업을 하고 있는데 SessionProvider를 Auth.js에서 제공해주는데 왜 직접 따로 SessionProvider를 구현하시는지 궁금합니다.
안녕하세요! 코딩 첫 입문 강의때부터 항상 잘 보고 있습니다 감사합니다!
next-auth로 구현하다보니 의문점이 생겼는데요.
NextAuth로 signIn을 할 때 세션 정보가 쿠키에 저장되는데, 이때 max-age 옵션을 따로 설정하지 않으면 기본적으로 1달로 설정되고 있는 것 같습니다. 찾아보니 max-age 값을 최대값으로 설정하려고 해도(예: 4년), NextAuth에서는 자체적으로 최대 1년으로 제한하는 것 같습니다.
여기서 제가 궁금한 것은, NextAuth를 사용하면 max-age가 최대 1년이고, 그렇다면 1년 후에 세션이 만료되니까 모든 사용자가 1년 후에 어쩔 수 없이 로그아웃되는 것인가? 라는 생각이 들었습니다.
이런 경우에 어떻게 처리를 하면 되는걸까요?? unstable_update 함수로 세션의 expire 시간을 조정하려고 해봤는데도 잘 안되는 것 같아서 질문드립니다 ㅠㅠ
안녕하세요! 글을 정독하면서 많이 배우고 있습니다. 마지막 반응형 세션확인 부분에서
Error: headers was called outside a request scope
에러가 생기는데 혹시 아시는 부분이 있을까요?
@jjaykim
안녕하세요 :D
해당 에러를 컴포넌트 범위 안에서 호출해야 하는 것을 그 밖에서 호출할 때 종종 비슷하게 봤던 것 같은데, 정확한 원인은 모르겠네요.
해당 에러가 발생하는 부분의 코드 순서나 범위를 확인해 보시면 좋지 않을까 합니다.
안녕하세요! 한국어로 정리가 잘된 글을 봐서 큰 도움 받고 있습니다.
auth.js v5 버전을 활용해서 비슷한 방법으로 로그인 관리작업을 하고 있는데 SessionProvider를 Auth.js에서 제공해주는데 왜 직접 따로 SessionProvider를 구현하시는지 궁금합니다.
@doyoonkim12345
안녕하세요~!!
NextAuth.js에서 제공하는 useSession
훅이 v5 기준에서 서버 컴포넌트와 호환이 안 되는 부분이 있어서, 페이지 이동할 때 세션 업데이트가 가능하도록 단순 예제로 만든 것이고, 다른 종속성을 추가하면 아직까진 적절히 활용할 수 있을 듯합니다.
그렇다고 제가 작성한 코드가 호환이 잘 된다는 건 아니고, 상황에 맞게 활용 가능하다 정도로 이해해 주시면 좋겠네요.
아직 베타 버전이니 이후에 호환성이 개선되면, 말씀처럼 굳이 훅을 따로 만들어 관리하지 않아도 되겠죠.
안녕하세요! 코딩 첫 입문 강의때부터 항상 잘 보고 있습니다 감사합니다! next-auth로 구현하다보니 의문점이 생겼는데요.
NextAuth로 signIn을 할 때 세션 정보가 쿠키에 저장되는데, 이때 max-age 옵션을 따로 설정하지 않으면 기본적으로 1달로 설정되고 있는 것 같습니다. 찾아보니 max-age 값을 최대값으로 설정하려고 해도(예: 4년), NextAuth에서는 자체적으로 최대 1년으로 제한하는 것 같습니다.
여기서 제가 궁금한 것은, NextAuth를 사용하면 max-age가 최대 1년이고, 그렇다면 1년 후에 세션이 만료되니까 모든 사용자가 1년 후에 어쩔 수 없이 로그아웃되는 것인가? 라는 생각이 들었습니다.
이런 경우에 어떻게 처리를 하면 되는걸까요?? unstable_update 함수로 세션의 expire 시간을 조정하려고 해봤는데도 잘 안되는 것 같아서 질문드립니다 ㅠㅠ
@hoon7200
안녕하세요^^
NextAuth 함수의 session.maxAge
속성에서 초 단위로 세션 만료 시간을 설정할 수 있는데, 이미 확인 하셨겠죠?!
세션 만료 시간을 너무 길게 잡으면 보안적으로 좋지 않으니, 제 권장은 2주이고 길어도 2달이 최대치라고 생각하는데요.
만료 시간을 그보다 훨씬 길게 잡아야 하는 다른 이유가 있을까요?
답변 감사 드립니다!
그렇다면 선생님 말씀처럼 maxAge를 2주정도로 잡게 된다면 2주 후에 로그아웃 처리가 되는걸까요?
저는 지속적으로 서비스를 사용하는 사용자라면 초기 로그인 때 maxAge를 2주로 설정했다고 해도 세션 expiry 시간을 계속해서 연장시키고 싶은데 이게 next-auth단에서 가능한건지 모르겠습니다..
세션 만료 시간에 근접하게 OS단에서 시간을 임의로 설정 후 테스트해봤는데 expire 시간이 연장이 안되고 만료시간이 되면 세션 쿠키가 사라지면서 로그아웃처리가 되더라구요 ㅠㅠ
답변 감사 드립니다! 그렇다면 선생님 말씀처럼 maxAge를 2주정도로 잡게 된다면 2주 후에 로그아웃 처리가 되는걸까요? 저는 지속적으로 서비스를 사용하는 사용자라면 초기 로그인 때 maxAge를 2주로 설정했다고 해도 세션 expiry 시간을 계속해서 연장시키고 싶은데 이게 next-auth단에서 가능한건지 모르겠습니다.. 세션 만료 시간에 근접하게 OS단에서 시간을 임의로 설정 후 테스트해봤는데 expire 시간이 연장이 안되고 만료시간이 되면 세션 쿠키가 사라지면서 로그아웃처리가 되더라구요 ㅠㅠ
@hoon7200
제가 이해한 게 맞다면, 액세스 토큰이 만료되었을 때 리프레시 토큰으로 만료 시간을 연장하면 됩니다.
auth.ts
파일의 jwt
콜백에서 token.accessTokenExpires
부분의 시간을,
Date.now() + refreshedTokens.expiresIn
(현재 시간 + 연장 시간)으로 할당해 보세요.
안녕하세요, 초보라서 멍청할수도있는 질문하나만 올립니다.. ㅠㅠ
로그인은 똑같이 되는데,
로그아웃 할 때도 단순히 next-auth signOut()만 호출해주면 그걸로 더 할게 없을까요?
테스트 해봤는데,
- 테스트중인 프로젝트에 구글로그인 기능 연동해놓고
- 시크릿탭에서
- 로그인페이지 가서 구글로그인 성공한 다음,
- 로그아웃 할 때 signOut() 호출시키면
- 당연히 세션은 잘 삭제됩니다만...
- 구글 드라이브같은 페이지 들어가면 접근 잘되네요, (이게 정상인지 모르겠습니다)
signOut 호출시 쿠키에 저장된 로그인정보가 다 날아가니까 제 사이트에서는 당연히 로그아웃되는데,
첨에 구글로그인 성공하면서 생긴 구글 로그인정보가 제 브라우저에 남아있었고, 그건 같이 삭제가 안됐어요.
이게 정상인지 모르겠네요; ㅠㅠ
전 회사에서 네이버 카카오 SNS 로그인 연동을 next-auth 없이 했었는데,
그때는 로그아웃 할 때 백엔드의 로그아웃 API를 호출하고있었어요.
(그 안에서 무슨동작하는지는 모름... ㅠㅠ)
그 백엔드 로그아웃 API 안에서 사용자의 네이버, 카카오 로그인 자체를 무효하게 한다거나 해서 아예 네이버, 카카오 로그인 자체가 다른 네이버, 카카오 사이트에서도 풀리게한다거나 그런 처리는 따로 안하는거죠?
보통 (SNS) 로그아웃 API 안에서는 뭘 할까요?...
Apple공급자도 보고싶습니다 ㅜㅜ 이 글을 읽고 덕분에 구글 로그인은 잘 구현했는데 Apple은 또 다른 방식인것같아 도움을 구합니다.
안녕하세요, 초보라서 멍청할수도있는 질문하나만 올립니다.. ㅠㅠ
로그인은 똑같이 되는데, 로그아웃 할 때도 단순히 next-auth signOut()만 호출해주면 그걸로 더 할게 없을까요?
테스트 해봤는데,
- 테스트중인 프로젝트에 구글로그인 기능 연동해놓고
- 시크릿탭에서
- 로그인페이지 가서 구글로그인 성공한 다음,
- 로그아웃 할 때 signOut() 호출시키면
- 당연히 세션은 잘 삭제됩니다만...
- 구글 드라이브같은 페이지 들어가면 접근 잘되네요, (이게 정상인지 모르겠습니다)
signOut 호출시 쿠키에 저장된 로그인정보가 다 날아가니까 제 사이트에서는 당연히 로그아웃되는데, 첨에 구글로그인 성공하면서 생긴 구글 로그인정보가 제 브라우저에 남아있었고, 그건 같이 삭제가 안됐어요. 이게 정상인지 모르겠네요; ㅠㅠ
전 회사에서 네이버 카카오 SNS 로그인 연동을 next-auth 없이 했었는데, 그때는 로그아웃 할 때 백엔드의 로그아웃 API를 호출하고있었어요. (그 안에서 무슨동작하는지는 모름... ㅠㅠ)
그 백엔드 로그아웃 API 안에서 사용자의 네이버, 카카오 로그인 자체를 무효하게 한다거나 해서 아예 네이버, 카카오 로그인 자체가 다른 네이버, 카카오 사이트에서도 풀리게한다거나 그런 처리는 따로 안하는거죠?
보통 (SNS) 로그아웃 API 안에서는 뭘 할까요?...
@developer-choi
안녕하세요😊
로그인 세션은 주소마다 적용되므로, 프로젝트에 구글 로그인을 적용했다는 것으로 다른 사이트에 구글 로그인이 되는 건 아닙니다.
워낙 구글 로그인 서비스가 많으니, 아무래도 사용 중에 뭔가 착각하신 게 아닐까 합니다.
그리고 로그아웃 API를 호출하면, 기본적으로 DB에 있는 사용자 세션을 만료시킵니다.
그러면 클라이언트에서 새롭게 로그인하지 않는 한, 기존에 가진 세션 정보로는 인증이 필요한 정보를 가져올 수 없게 됩니다.
결국 로그아웃 후에는 다시 로그인해야 합니다.
Apple공급자도 보고싶습니다 ㅜㅜ 이 글을 읽고 덕분에 구글 로그인은 잘 구현했는데 Apple은 또 다른 방식인것같아 도움을 구합니다.
@sonncho
이 글로 Auth.js에서 Google 공급자 적용 방법을 이해하셨다면, 기본적인 공급자 적용 및 사용은 거의 비슷하니까 Apple 공급자 적용도 어렵지 않게 하실 수 있을 겁니다.
안녕하세요. ^^ 이번 프로젝트에 next-auth를 이용하여 로그인을 구현 할려고 하는데 초보라서 1달 넘게... 진도가 나지 않아 이렇게 글을 남깁니다.
- CredentialsProvider(로그인)로 처리 했을때 authorize에서 accessToken을 발급 하는 이유가 jwt token의 exp, session expires를 수정 할수 없어 별도 accessToken 발급 후 jwt callback에서 accessToken 유효시간 체크 후 oAuth 처럼 RefreshAccessToken 재발급을 통해 세션을 관리 하기 위한 것 인가요 ?
jwt callbacks 호출 시 jwt token의 exp, session expires(유효시간) 갱신 될까요 ?
- 브라우져 종료 시 세션이 시간이 존재 하여, 로그인이 유지 되는데 브라우저 종료 시 세션 만료 할려면 어떻게 해야 될까요 ? session max-age, expiry 등 수정 가능 할 까요 ?
현재 화면 갱신 또는 새로고침, 토큰시간 연장 , 브라우져 종료 시 세션 만료 등 처리가 어려워서 질문드립니다 ㅠㅠ
@yunkwangsu
1번,
말씀하신 부분도 해당이 되지만, Credentials 공급자는 로그인 처리 서버(DB)가 별도로 있을테니, 직접 액세스 코드를 받아와서 그대로 활용하는 용도입니다.
2번,
다음 코드와 같이 cookies
옵션을 지정할 수 있습니다만,
expires
옵션을 지정하지 않았을 때, '세션' 단위가 되는 것이 아니라 지정한 만료 시간이나 한 달의 만료 기간이 기본으로 들어갑니다.
일단 주어진 옵션만으로 말씀하신 요구사항을 해결할 수는 없을 듯합니다.
브라우저 종료 시 세션이 만료되어야 하는 이유를 제가 정확하게는 모르겠지만, 적당한 시점(페이지 시작이나 종료)에 쿠키 정보를 삭제하도록 처리하면 어떨까 합니다.
NextAuth({
// ...
cookies: {
sessionToken: {
options: {
httpOnly: true,
sameSite: 'lax',
path: '/',
secure: process.env.NODE_ENV === 'production',
expires: undefined // Date | undefined 타입
}
}
}
})
안녕하세요. ^^ 이번 프로젝트에 next-auth를 이용하여 로그인을 구현 할려고 하는데 초보라서 1달 넘게... 진도가 나지 않아 이렇게 글을 남깁니다.
- CredentialsProvider(로그인)로 처리 했을때 authorize에서 accessToken을 발급 하는 이유가 jwt token의 exp, session expires를 수정 할수 없어 별도 accessToken 발급 후 jwt callback에서 accessToken 유효시간 체크 후 oAuth 처럼 RefreshAccessToken 재발급을 통해 세션을 관리 하기 위한 것 인가요 ?
jwt callbacks 호출 시 jwt token의 exp, session expires(유효시간) 갱신 될까요 ?
- 브라우져 종료 시 세션이 시간이 존재 하여, 로그인이 유지 되는데 브라우저 종료 시 세션 만료 할려면 어떻게 해야 될까요 ? session max-age, expiry 등 수정 가능 할 까요 ?
현재 화면 갱신 또는 새로고침, 토큰시간 연장 , 브라우져 종료 시 세션 만료 등 처리가 어려워서 질문드립니다 ㅠㅠ
최고..... 이렇게 친절하게 정리된 글을 공유해주셔서 너무 너무 감사합니다.... 정말 큰 도움이 됩니다
안녕하세요! 글 정말 잘 읽었습니다! 깃허브 문서도 올려주셔서 정말 감사합니다!! 그런데 궁금한 점이 있는데요, serverAction이 사용된 회원가입과 로그인 파일에서 제가 useState를 사용하려고 'use client'를 기재하려는데 같은 파일에서 영웅님에서 쓰신방법으로 action을 병용해도 되는지 궁금합니다!!
@inyoungfriend
네 안녕하세요 :D
제가 질문을 제대로 이해했는지 모르겠지만, 클라이언트 컴포넌트에서도 서버 액션을 사용할 수 있어요.
그래서 말씀처럼 적용하셔도 될 듯합니다.
안녕하세요! 글 정말 잘 읽었습니다! 깃허브 문서도 올려주셔서 정말 감사합니다!! 그런데 궁금한 점이 있는데요, serverAction이 사용된 회원가입과 로그인 파일에서 제가 useState를 사용하려고 'use client'를 기재하려는데 같은 파일에서 영웅님에서 쓰신방법으로 action을 병용해도 되는지 궁금합니다!!
아앗 제가 헷갈리게 질문을 적었네요 죄송합니다ㅜㅜ 클라언트 컴포넌트 따로 서버컴포넌트 따로 분리를 시켜놓는데 다만 이제 클라이언트 컴포넌트에 useEffect와 useState를 사용하고 return에 <form action={signInWithCredentials}>~~~</form>
이런 형식으로 적어놔서 연결시키는 형태가 가능한게 맞나용?
@inyoungfriend 네 안녕하세요 :D 제가 질문을 제대로 이해했는지 모르겠지만, 클라이언트 컴포넌트에서도 서버 액션을 사용할 수 있어요. 그래서 말씀처럼 적용하셔도 될 듯합니다.
안녕하세요! 글 정말 잘 읽었습니다! 깃허브 문서도 올려주셔서 정말 감사합니다!! 그런데 궁금한 점이 있는데요, serverAction이 사용된 회원가입과 로그인 파일에서 제가 useState를 사용하려고 'use client'를 기재하려는데 같은 파일에서 영웅님에서 쓰신방법으로 action을 병용해도 되는지 궁금합니다!!
@inyoungfriend
네, 클라이언트 컴포넌트의 <form>
요소 action
속성으로 연결해도 서버 액션이 말그대로 서버에서 실행됩니다.
말씀처럼 적용하는 게 가능해요~
참고로 이런 방식은 Next.js 사용법이니, 서버 액션 내용을 참고하셔도 좋을 듯해요! 👍
아앗 제가 헷갈리게 질문을 적었네요 죄송합니다ㅜㅜ 클라언트 컴포넌트 따로 서버컴포넌트 따로 분리를 시켜놓는데 다만 이제 클라이언트 컴포넌트에 useEffect와 useState를 사용하고 return에
<form action={signInWithCredentials}>~~~</form>
이런 형식으로 적어놔서 연결시키는 형태가 가능한게 맞나용?
개발 진행에 큰 도움 되었습니다.
좋은 내용 공유해주셔서 감사합니다.
안녕하세요~ 좋은 글 감사합니다😁👍 프로젝트를 하다가 세션 업데이트 관련해서 궁금한 점이 생겼는데요,
현재 next.js 14에서 ^5.0.0-beta.16 버전을 사용하고 있는데 미들웨어에서 updateSession, unstable_update 함수가 지원되지 않는거 같습니다..! 베타 버전의 문제인지, next에서는 안되는건지, 혹시 다른 방법이 있는지 궁금합니다. 인터셉터나 미들웨어에서 refreshtoken을 갱신시키고 싶은데 jwt 콜백에서만 가능한지 잘 모르겠어서 질문 드립니다!
@ggjiny
안녕하세요~ 제 글을 좋게 봐주셔서 감사합니다^^
일단 updateSession
은 Next Auth의 unstable_update
함수를 매핑한 거라서, middleware.ts
가 아니라 auth.ts
에서 찾으셔야 해요.
그리고 혹시나 싶어 확인하니 5.0.0-beta.16
버전에 unstable_update
함수가 잘 포함되어 있고, 최신의 5.0.0-beta.22
버전에도 역시 포함되어 있습니다.
현재 게시글로만 구조를 이해하기 어려울 수 있으니, 참고할 수 있는 같은 구조의 프로젝트 저장소를 공유할게요~
https://github.com/ParkYoungWoong/nextjs-app--Authjs_Zustand_TanStackQuery
안녕하세요~ 좋은 글 감사합니다😁👍 프로젝트를 하다가 세션 업데이트 관련해서 궁금한 점이 생겼는데요, 현재 next.js 14에서 ^5.0.0-beta.16 버전을 사용하고 있는데 미들웨어에서 updateSession, unstable_update 함수가 지원되지 않는거 같습니다..! 베타 버전의 문제인지, next에서는 안되는건지, 혹시 다른 방법이 있는지 궁금합니다. 인터셉터나 미들웨어에서 refreshtoken을 갱신시키고 싶은데 jwt 콜백에서만 가능한지 잘 모르겠어서 질문 드립니다!
선생님 nextjs 를 이제 공부하려고 해서 인증관련에서 헤메이고 있었는데
정말 감사합니다.
설명도 잘하시고 혹시 next 관련해서 인프런에 강의하실계획이 있으시면 꼭 등록하겠습니다.
감사합니다.
👍
안녕하세요 개발에 도움이 많이 되는글 감사합니다!
한가지 질문이 있습니다!
위챗같은 경우는 next-auth provider에는 없고, @auth/core에서는 제공하는데요 이걸 예시로 올려주신 구글처럼 provider에 추가하는 방법을 혹시 알고계실까오?? 제가 직접 해보니 타입이슈가 있어서요... 좀 찾아봤는데 방법을 모르겟어서 혹시나 하고 여쭤봅니다 ㅠㅠ
@wakie92
안녕하세요^^
일단 공식 문서에는 @auth/core
를 사용하라고 나오긴 하네요.
그래서 혹시나 싶어서 패키지를 열어봤는데, 매핑된 공급자 모듈이 있는 건 확인을 해서 아래 예시처럼 사용을 해봤어요.
실제 위챗 ID
와 SECRET
연결해서 로그인 테스트 해보시면 될 듯합니다.
import NextAuth from 'next-auth'
import Credentials from 'next-auth/providers/credentials'
import Google from 'next-auth/providers/google'
import WeChat from 'next-auth/providers/wechat'
NextAuth({
providers: [
Credentials({
// ...
}),
Google({
// ...
}),
WeChat({
clientId: process.env.AUTH_WECHAT_ID,
clientSecret: process.env.AUTH_WECHAT_SECRET
})
]
})
안녕하세요 개발에 도움이 많이 되는글 감사합니다! 한가지 질문이 있습니다! 위챗같은 경우는 next-auth provider에는 없고, @auth/core에서는 제공하는데요 이걸 예시로 올려주신 구글처럼 provider에 추가하는 방법을 혹시 알고계실까오?? 제가 직접 해보니 타입이슈가 있어서요... 좀 찾아봤는데 방법을 모르겟어서 혹시나 하고 여쭤봅니다 ㅠㅠ