Nuxt 통합
시작하기 전에 Better Auth 인스턴스가 구성되어 있는지 확인하세요. 아직 설정하지 않았다면 설치 가이드를 확인하세요.
API 라우트 생성
핸들러를 API 라우트에 마운트해야 합니다. /server/api/auth 내에 [...all].ts라는 파일을 생성하고 다음 코드를 추가하세요:
import { auth } from "~/lib/auth"; // auth 설정을 import합니다
export default defineEventHandler((event) => {
return auth.handler(toWebRequest(event));
});Better Auth 설정에서 경로를 변경할 수 있지만 /api/auth/[...all]로 유지하는 것을 권장합니다
데이터베이스 마이그레이션
다음 명령어를 실행하여 데이터베이스에 필요한 테이블을 생성하세요:
npx @better-auth/cli migrate클라이언트 생성
클라이언트 인스턴스를 생성합니다. 파일 이름은 원하는 대로 지정할 수 있습니다. 여기서는 lib/ 디렉터리 내에 client.ts 파일을 생성합니다.
import { createAuthClient } from "better-auth/vue" // better-auth/vue에서 import해야 합니다
export const authClient = createAuthClient({
// 클라이언트 설정을 여기에 전달할 수 있습니다
})클라이언트를 생성한 후에는 회원가입, 로그인 및 기타 작업을 수행할 수 있습니다. 일부 작업은 반응형입니다.
사용 예제
<script setup lang="ts">
import { authClient } from "~/lib/client"
const session = authClient.useSession()
</script>
<template>
<div>
<button v-if="!session?.data" @click="() => authClient.signIn.social({
provider: 'github'
})">
GitHub로 계속하기
</button>
<div>
<pre>{{ session.data }}</pre>
<button v-if="session.data" @click="authClient.signOut()">
로그아웃
</button>
</div>
</div>
</template>서버 사용법
auth 인스턴스에서 내보낸 api 객체에는 서버에서 수행할 수 있는 모든 작업이 포함되어 있습니다. Better Auth 내에서 만들어진 모든 엔드포인트는 함수로 호출할 수 있습니다. 플러그인 엔드포인트도 포함됩니다.
예제: 서버 API 라우트에서 세션 가져오기
import { auth } from "~/lib/auth";
export default defineEventHandler((event) => {
const session = await auth.api.getSession({
headers: event.headers
});
if(session) {
// session.session 및 session.user에 액세스
}
});SSR 사용법
SSR과 함께 Nuxt를 사용하는 경우 페이지 컴포넌트의 setup 함수에서 useSession 함수를 사용하고 useFetch를 전달하여 SSR에서 작동하도록 할 수 있습니다.
<script setup lang="ts">
import { authClient } from "~/lib/auth-client";
const { data: session } = await authClient.useSession(useFetch);
</script>
<template>
<p>
{{ session }}
</p>
</template>미들웨어
Nuxt 프로젝트에 미들웨어를 추가하려면 클라이언트에서 useSession 메서드를 사용할 수 있습니다.
import { authClient } from "~/lib/auth-client";
export default defineNuxtRouteMiddleware(async (to, from) => {
const { data: session } = await authClient.useSession(useFetch);
if (!session.value) {
if (to.path === "/dashboard") {
return navigateTo("/");
}
}
});리소스 및 예제
- GitHub의 Nuxt 및 Nuxt Hub 예제.
- GitHub의 NuxtZzle는 Nuxt, Drizzle ORM 예제 미리보기
- StackBlitz의 Nuxt 예제.
- NuxSaaS (Github)는 안전하고 효율적인 사용자 인증을 위해 Better Auth를 활용하는 풀스택 SaaS 스타터 키트입니다. 데모
- NuxtOne (Github)은 AIaaS(AI-as-a-Service) 애플리케이션을 구축하기 위한 Nuxt 기반 스타터 템플릿입니다 미리보기