はじめに
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には保存されない。