NextAuth.jsのセッション管理方法の違い

その他

はじめに

NextAuth.jsでセッション管理をする場合、jwtまたはdatabaseの選択肢があります。

export const authOptions: AuthOptions = {
  // Configure one or more authentication providers
  providers: [
    GithubProvider({
      clientId: process.env.GITHUB_ID ?? "",
      clientSecret: process.env.GITHUB_SECRET ?? "",
    }),
    // ...add more providers here
  ],
  session: {
    strategy: "jwt", // jwt or database
    // maxAge: 30 * 24 * 60 * 60, // 30 days
    // updateAge: 24 * 60 * 60, // 24 hours
  },
  adapter: PrismaAdapter(prisma),
};

これらの違いについてまとめました。

テーブルは、NextAuth.js側が期待する構造とします。

Auth.js
Authentication for the Web.

jwtの場合

Cookie

__Secure-next-auth.session-tokenに、JWTトークンが保存される。

DB

User、Accountには、情報が格納される。

Session、VerificationTokenには保存されない。

databaseの場合

Cookie

Sessionテーブルにある、sessionTokenが保存された。

DB

User、Accountには、jwtの時と同じく情報が格納される。

Sessionテーブルに、セッション情報が保存された。

VerificationTokenには保存されない。