LoginSignup
0
1

NextAuth.jsは、Next.jsアプリケーションに簡単に認証を追加するためのライブラリです。このライブラリはNext.jsのエコシステムとの統合が深く、サーバーレス環境やサーバーサイドレンダリングのアプローチに適しています。

NextAuth.jsの主な特徴

認証プロバイダーのサポート: Google, Facebook, Twitter, GitHubなど、多くの既存の認証プロバイダーとの統合が容易です。また、任意のOAuthサービスや資格情報を使用した認証もサポートされています。

セッション管理: セッション情報はクライアントサイドで使用でき、Next.jsのAPIルートやサーバーサイド関数からもアクセス可能です。

CSRF保護: 既定でCSRF攻撃の保護が組み込まれています。

データベースレス: NextAuth.jsはデータベースを必要とせず動作しますが、セッションやユーザー情報を保存するためのデータベースとの統合もサポートされています。

Email認証: Emailとマジックリンクを使用した認証をサポートしています。

独自のコールバックとページ: 認証フロー中の特定のイベントやページ(ログインページ、エラーページなど)をカスタマイズすることができます。

TypeScriptサポート: TypeScriptの型定義が組み込まれているので、TypeScriptプロジェクトとの互換性があります。

NextAuth.jsをNext.jsプロジェクトに導入する方法

1. 必要なパッケージのインストール

最初に、NextAuth.jsとその他必要な依存関係をインストールします。

npm install next-auth

2. APIルートの作成

pages/api/auth/[...nextauth].tsという名前で新しいファイルを作成します。このファイルはNextAuth.jsのすべての認証ルートを処理します。

import NextAuth from "next-auth";
import Providers from "next-auth/providers";

export default NextAuth({
  providers: [
    Providers.Google({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
    // 他のプロバイダーもここに追加できます
  ],
  // その他の設定
});

3. 環境変数の設定

.env.localファイルをプロジェクトのルートディレクトリに作成し、以下の内容を追加します。これはGoogle認証の例です。

GOOGLE_CLIENT_ID=あなたのGoogleClientID
GOOGLE_CLIENT_SECRET=あなたのGoogleClientSecret
NEXTAUTH_URL=http://localhost:3000

注意: これはローカル開発用の設定です。デプロイ時には適切なURLと認証情報を使用してください。

4. アプリに認証を追加する

NextAuth.jsのuseSessionフックを使用して、アプリ内のどこからでもセッション情報にアクセスできます。

import { useSession } from "next-auth/react";

function Component() {
  const { data: session } = useSession();

  if (session) {
    return <p>こんにちは、{session.user.name}さん!</p>;
  } else {
    return <p>ログインしていません。</p>;
  }
}

5. ログインとログアウト

NextAuth.jsには、ログインとログアウトのための組み込み関数も用意されています。

import { signIn, signOut } from "next-auth/react";

// ログインボタン
<button onClick={() => signIn("google")}>Googleでログイン</button>

// ログアウトボタン
<button onClick={() => signOut()}>ログアウト</button>

これで基本的なNextAuth.jsの導入と設定は完了です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1