NextAuth.jsのオプションまとめ。

NextAuth.jsを利用していて、セッションの有効期限を変更したりカスタマイズしたくなりました。

NextAuth.jsのオプション設定でどんなことができるかまとめてみました。

NextAuth.jsの基本コード

import NextAuth from "next-auth"

export default NextAuth({
    ...

})

NextAuth.jsのオプション早見表

オプション名内容デフォルト値必須?
providersプロバイダの指定
(ログインに使用できるSNSサービスの種類を指定)
[]Yes
secret・Cookieの署名/暗号化などに使う設定string(開発)
No(本番)
Yes
(本番)
session・セッションに関する設定objNo
jwt???objNo
pages???{}No
callbacks・signIn, signOutなどアクションが起きた時に実行される処理のカスタマイズ設定objNo
events???objNo
adapter・外部DBやバックエンドシステムに接続するための設定
(ユーザー情報等をDBに保存したい場合など)
noneNo
debug???falseNo
logger???consoleNo
theme???objNo

providers

ユーザー登録(サインイン)やログインに使用できるプロバイダの設定

Google, Facebook, Twitter, GitHub, Emailなどなど。

export default NextAuth({
    ...,
    providers: [
        ...,
    ],
});

【関連記事】 NextAuth.jsで使える主要なプロバイダ一覧まとめ。

secret

「トークンのハッシュ化」や「Cookieの署名/暗号化」、「暗号化キーの生成」のために必要な設定。

本番環境の場合、「⑴ “secret“を記載」または「⑵ 環境変数に”NEXTAUTH_SECRET”を設定」のどちらかをしないとエラーになります。

方法⑴ “secret”を記載する

export default NextAuth({
    ...,
    secret: 'secret',
});

方法⑵ 環境変数に”NEXTAUTH_SECRET”を設定

下記コマンドで乱数を生成します。

$ openssl rand -base64 32

生成された乱数を環境変数に追加します。

NEXTAUTH_SECRET=[生成した乱数]

session

セッションに関する設定。

strategyセッション情報の保存方法(「JWT」や「データベース」など)
デフォルト値は“jwt”
「adapter」の指定されている場合は、デフォルトが“database”になる。
maxAgeセッションの有効期限。「秒」単位。
updateAgeセッション延長のためのデータベース更新頻度。「秒」単位。

セッションの有効期限は「どのくらいの期間、ログインしたままの状態が保たれるか」。

export default NextAuth({
    ...,
    session: {
        strategy: "database",
        maxAge: 30 * 24 * 60 * 60,  // 30 days
        updateAge: 24 * 60 * 60,  // 24 hours
    }
});

jwt

今後追記する…かも。

pages

今後追記する…かも。

callbacks

今後追記する…かも。

events

今後追記する…かも。

adapter

外部DBやバックエンドシステムに接続するための設定。UserデータやSessionデータなどをDBに保存したい場合などに必要な設定です。

例えば、ユーザー情報等を「Prisma」を使ってDBに保存したい場合など。

// 例:Prisma
import NextAuth from "next-auth"
import { PrismaAdapter } from "@next-auth/prisma-adapter"
import { PrismaClient } from "@prisma/client"

const prisma = new PrismaClient()

export default NextAuth({
    adapter: PrismaAdapter(prisma),
})

debug

今後追記する…かも。

logger

今後追記する…かも。

theme

今後追記する…かも。

まとめ

ユーザーのログインした状態を保持する期間を「session」で指定できることがわかって嬉しい。

コメントを残す

*