Next.js App RouterでAuth.jsをセットアップ
Auth.jsをインストールし、route handlersを設定してGitHub OAuth providerを追加します。
「Next.js App RouterでAuth.jsをセットアップ」はCoddyKit上の無料React Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。
Auth.jsとは
Auth.js(旧称NextAuth.js v5)は、Next.js向けの多機能な認証ライブラリです。OAuthプロバイダー、認証情報、セッション、JWTを標準で処理できます。
インストール
Auth.jsのベータ版をインストールし、設定ファイルを初期化します。
npm install next-auth@beta
# Create auth.ts at project root
touch auth.tsAuth設定の作成
プロジェクトルートのauth.tsに、プロバイダーとコールバックを含む認証設定を定義します。
import NextAuth from 'next-auth';
import GitHub from 'next-auth/providers/github';
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [GitHub],
callbacks: {
session({ session, token }) {
session.user.id = token.sub!;
return session;
},
},
});Route Handlerの設定
app/api/auth/[...nextauth]/route.tsにキャッチオールのRoute Handlerを作成し、Auth.jsのハンドラーに処理を委譲します。
// app/api/auth/[...nextauth]/route.ts
import { handlers } from '@/auth';
export const { GET, POST } = handlers;環境変数
OAuthプロバイダーに必要な環境変数を設定します。JWTへの署名にはAUTH_SECRETが必要です。
# .env.local
AUTH_SECRET=your-random-secret-here
# GitHub OAuth
AUTH_GITHUB_ID=your-github-client-id
AUTH_GITHUB_SECRET=your-github-client-secret
# Generate AUTH_SECRET:
# npx auth secretサインイン/サインアウトボタンの追加
auth.tsからsignInとsignOutをインポートし、Server Componentのフォームで使用します。
import { signIn, signOut } from '@/auth';
export function SignInButton() {
return (
<form action={async () => { 'use server'; await signIn('github'); }}>
<button type="submit">Sign in with GitHub</button>
</form>
);
}
export function SignOutButton() {
return (
<form action={async () => { 'use server'; await signOut(); }}>
<button type="submit">Sign out</button>
</form>
);
}Server Componentでのセッションの読み取り
任意のServer ComponentまたはRoute Handlerからauth.tsのauth()を呼び出すと、現在のセッションを取得できます。
import { auth } from '@/auth';
export default async function ProfilePage() {
const session = await auth();
if (!session) redirect('/login');
return <h1>Welcome, {session.user?.name}</h1>;
}Middlewareによるページの保護
Auth.jsのMiddlewareを使用すると、リクエストごとにサーバーロジックを実行せず、エッジでルートを保護できます。
// middleware.ts
export { auth as middleware } from '@/auth';
export const config = {
matcher: ['/dashboard/:path*', '/profile/:path*'],
};データベースセッション
データベースアダプター(例:@auth/prisma-adapter)を追加すると、JWTではなくデータベースにセッション、ユーザー、アカウントを永続化できます。
import { PrismaAdapter } from '@auth/prisma-adapter';
import { prisma } from '@/lib/prisma';
export const { handlers, auth, signIn, signOut } = NextAuth({
adapter: PrismaAdapter(prisma),
providers: [GitHub],
session: { strategy: 'database' },
});セッション型のカスタマイズ
Auth.jsのセッション型を拡張し、ユーザーIDやロールなどのカスタムフィールドを含めます。
// types/next-auth.d.ts
import { DefaultSession } from 'next-auth';
declare module 'next-auth' {
interface Session {
user: { id: string; role: string } & DefaultSession['user'];
}
}エラー処理
Auth.jsはデフォルトで、認証に失敗すると/errorへリダイレクトします。app/error/page.tsxを作成すると、エラーページをカスタマイズできます。
理解度チェック
Next.js App RouterでAuth.jsのGETおよびPOSTハンドラーを公開するには、どのファイルを作成する必要がありますか。
まとめ
next-auth@betaをインストールし、プロバイダーとコールバックを含むauth.tsを作成します。app/api/auth/[...nextauth]/route.tsでハンドラーを公開し、AUTH_SECRETとプロバイダー用の環境変数を設定します。Server Componentではauth()でセッションを読み取ります。
AI チューターと学ぶ React — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 88
- レッスン
- 324
よくある質問
「Next.js App RouterでAuth.jsをセットアップ」レッスンは無料ですか?
はい。「Next.js App RouterでAuth.jsをセットアップ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。
「Next.js App RouterでAuth.jsをセットアップ」で何を学びますか?
Auth.jsをインストールし、route handlersを設定してGitHub OAuth providerを追加します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
React Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Next.js App RouterでAuth.jsをセットアップ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このReact Academyレッスンでコードを書いて実行できますか?
はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Next.js App RouterでAuth.jsをセットアップ
- Session管理とuseSession Hook
- Credentials Providerとカスタムログイン
- Middlewareベースのルート保護