티스토리 뷰

반응형

 

✅ NextAuth.js 이벤트(Events) 설정

Events는 인증 플로우 중 특정 상황에서 호출되는 비동기 함수입니다.
반환값은 무시되며, 주로 감사 로그(Audit Log), 알림, 추가 작업 처리 등에 사용됩니다.

⚠️ 주의: 이벤트 핸들러가 await을 사용하면 인증 API 흐름이 해당 핸들러가 완료될 때까지 대기합니다.
너무 무거운 작업은 비동기로 별도로 실행하는 것이 좋습니다.


📄 지원되는 이벤트 종류

1. signIn

  • 사용자가 로그인 성공 시 호출
  • 전달 정보:
    • user: 로그인한 사용자 정보
    • account: Provider 계정 정보
    • profile: OAuth 프로필 정보 (credentials Provider는 없음)
    • isNewUser: 첫 로그인 여부 (boolean)

2. signOut

  • 사용자가 로그아웃할 때 호출
  • 전달 정보:
    • token: JWT 세션을 사용하는 경우
    • session: DB 세션을 사용하는 경우

3. createUser

  • 어댑터(Adapter)를 통해 새로운 사용자가 생성될 때 호출
  • 전달 정보:
    • user: 생성된 사용자 객체

4. updateUser

  • 어댑터를 통해 기존 사용자가 업데이트될 때 호출
    (현재는 이메일 주소 검증 시에만 발생)
  • 전달 정보:
    • user: 업데이트된 사용자 객체

5. linkAccount

  • 사용자가 새로운 외부 계정(OAuth Provider 등)을 연결할 때 호출
  • 전달 정보:
    • user: 기존 사용자 객체
    • account: 새로 연결된 계정 정보
    • profile: OAuth Provider에서 받은 프로필 정보

6. session

  • 현재 세션을 요청할 때 호출
  • 전달 정보:
    • token: JWT 사용 시
    • session: DB 기반 세션 사용 시

🧩 사용 예시

반응형
export default NextAuth({
  events: {
    async signIn({ user, account, profile, isNewUser }) {
      console.log('새로운 로그인:', user.email)
    },
    async signOut({ token, session }) {
      console.log('로그아웃 완료:', token?.email || session?.user?.email)
    },
    async createUser({ user }) {
      console.log('신규 사용자 등록:', user.email)
    },
    async linkAccount({ user, account, profile }) {
      console.log('외부 계정 연결:', account.provider)
    }
  }
})

🛡️ 주의사항

  • 이벤트 핸들러는 API 인증 플로우와 동일한 서버 자원 내에서 실행됩니다.
  • 외부 HTTP 요청(예: Slack 알림 전송) 등을 await 없이 비동기 처리하는 것이 서버 응답 속도에 좋습니다.

 

NextAuth 이벤트, 로그인 성공 이벤트, 로그아웃 이벤트 처리, 사용자 생성 후 작업, OAuth 계정 연결 알림, 세션 이벤트 처리, 감사 로그 이벤트, 인증 플로우 후크, 인증 이벤트 핸들링, SEO 최적화 10개


 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
반응형