Skip to content
Migrating from NextAuth.js v4? Read our migration guide.

Xata Adapter

리소스

설정

설치

npm install @auth/xata-adapter
# Xata CLI를 전역에 설치 (아직 설치하지 않았다면)
npm install --location=global @xata.io/cli
 
# 로그인
xata auth login

설정

./auth.ts
import NextAuth from "next-auth"
import { XataAdapter } from "@auth/xata-adapter"
import { XataClient } from "../../../xata" // 생성된 클라이언트를 선택한 위치
 
const client = new XataClient()
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: XataAdapter(client),
  providers: [],
})

Xata 설정

이 어댑터를 사용하면 Auth.js와 Xata를 데이터베이스로 활용하여 사용자, 세션 등을 저장할 수 있습니다. Xata 프로젝트를 생성하고 Xata 데이터베이스를 사용하는 가장 좋은 방법은 Xata Command Line Interface (CLI)를 사용하는 것입니다.

CLI를 통해 XataClient를 생성할 수 있으며, 이 클라이언트는 Xata와 안전하게 작업할 수 있도록 도와줍니다. 이 어댑터는 이 클라이언트에 의존합니다.

준비가 되었다면, Xata 어댑터가 작동할 수 있는 Auth.js 스키마를 사용하여 새로운 Xata 프로젝트를 생성해 보겠습니다. 이를 위해 아래 스키마 파일을 프로젝트 디렉토리에 복사하여 붙여넣으세요:

schema.json
{
  "tables": [
    {
      "name": "nextauth_users",
      "columns": [
        {
          "name": "email",
          "type": "email"
        },
        {
          "name": "emailVerified",
          "type": "datetime"
        },
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "image",
          "type": "string"
        }
      ]
    },
    {
      "name": "nextauth_accounts",
      "columns": [
        {
          "name": "user",
          "type": "link",
          "link": {
            "table": "nextauth_users"
          }
        },
        {
          "name": "type",
          "type": "string"
        },
        {
          "name": "provider",
          "type": "string"
        },
        {
          "name": "providerAccountId",
          "type": "string"
        },
        {
          "name": "refresh_token",
          "type": "string"
        },
        {
          "name": "access_token",
          "type": "string"
        },
        {
          "name": "expires_at",
          "type": "int"
        },
        {
          "name": "token_type",
          "type": "string"
        },
        {
          "name": "scope",
          "type": "string"
        },
        {
          "name": "id_token",
          "type": "text"
        },
        {
          "name": "session_state",
          "type": "string"
        }
      ]
    },
    {
      "name": "nextauth_verificationTokens",
      "columns": [
        {
          "name": "identifier",
          "type": "string"
        },
        {
          "name": "token",
          "type": "string"
        },
        {
          "name": "expires",
          "type": "datetime"
        }
      ]
    },
    {
      "name": "nextauth_users_accounts",
      "columns": [
        {
          "name": "user",
          "type": "link",
          "link": {
            "table": "nextauth_users"
          }
        },
        {
          "name": "account",
          "type": "link",
          "link": {
            "table": "nextauth_accounts"
          }
        }
      ]
    },
    {
      "name": "nextauth_users_sessions",
      "columns": [
        {
          "name": "user",
          "type": "link",
          "link": {
            "table": "nextauth_users"
          }
        },
        {
          "name": "session",
          "type": "link",
          "link": {
            "table": "nextauth_sessions"
          }
        }
      ]
    },
    {
      "name": "nextauth_sessions",
      "columns": [
        {
          "name": "sessionToken",
          "type": "string"
        },
        {
          "name": "expires",
          "type": "datetime"
        },
        {
          "name": "user",
          "type": "link",
          "link": {
            "table": "nextauth_users"
          }
        }
      ]
    }
  ]
}

이제 다음 명령어를 실행하세요:

xata init --schema=./path/to/your/schema.json

CLI는 여러분에게 워크스페이스 (GitHub 조직이나 Vercel 팀과 유사한 개념)와 적절한 데이터베이스를 선택하도록 안내할 것입니다. Auth.js가 필요로 하는 테이블을 추가할 것이므로, 새로운 데이터베이스를 사용하는 것을 권장합니다.

Auth.js © Balázs Orbán and Team - 2025