adding-auth について
Next.js アプリに Auth.js 認証を追加する手順をコーディングエージェント向けに案内するスキルです。設定やプロバイダー構成からルート保護まで扱い、セッションやユーザー情報の永続化に使う任意のデータベースアダプターも説明します。
主な機能
- 01Auth.js のインストールと設定
- 02GitHub と Google プロバイダーの設定
- 03認証ルートハンドラーの作成
- 04サインイン・サインアウト UI の追加
- 05セッション確認によるルート保護
- 06任意のデータベースアダプターの設定
活用シーン
- 01Next.js アプリへのログインと登録の追加
- 02GitHub または Google OAuth の有効化
- 03認証済みセッションへのページアクセス制限
- 04アダプターによるセッションやユーザー情報の永続化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ spencerpauly/ awesome-cursor-skills --skill adding-authインストール後、Claude Code で/adding-authを入力して読み込まれたか確認します。
詳細
認証を追加する(Auth.js)
ユーザーから認証、ログイン、サインアップ、OAuth、またはセッション管理の追加を依頼された場合に、このスキルを使用します。
手順
-
依存関係をインストールします
npm install next-auth@beta -
認証シークレットを生成します
npx auth secretこれにより、
.env.localにAUTH_SECRETが追加されます。 -
認証設定を作成します — プロジェクトのルートに
auth.tsを作成します。import NextAuth from "next-auth"; import GitHub from "next-auth/providers/github"; import Google from "next-auth/providers/google"; export const { handlers, signIn, signOut, auth } = NextAuth({ providers: [GitHub, Google], }); -
ルートハンドラーを追加します —
app/api/auth/[...nextauth]/route.tsを作成します。import { handlers } from "@/auth"; export const { GET, POST } = handlers; -
各プロバイダーの環境変数を追加します
AUTH_SECRET=... AUTH_GITHUB_ID=... AUTH_GITHUB_SECRET=... AUTH_GOOGLE_ID=... AUTH_GOOGLE_SECRET=... -
サインイン/サインアウトの UI を追加します —
signInとsignOutのサーバーアクションを呼び出すコンポーネントを作成するか、<Link href="/api/auth/signin">を使用します。 -
ルートを保護します — サーバーコンポーネントまたはミドルウェアで
auth()関数を使用します。import { auth } from "@/auth"; export default async function ProtectedPage() { const session = await auth(); if (!session) redirect("/api/auth/signin"); return <div>Welcome {session.user?.name}</div>; } -
データベースアダプターを追加します(任意) — 永続的なセッションまたはユーザーレコードが必要な場合は、データベースアダプター(例:
@auth/drizzle-adapter、@auth/prisma-adapter)をインストールし、認証設定で構成します。
補足
- Auth.js v5 は、Next.js App Router と Server Actions にネイティブ対応しています。
- Pages Router では、
getServerSidePropsでgetServerSessionを使用し、クライアント側でuseSessionを使用します。 - 本番環境へのデプロイでは
NEXTAUTH_URLを追加します。 - セッションには最小限のユーザーデータを保存し、必要に応じてデータベースから完全なプロフィールを取得します。
コメント
Markdown 対応