我有一個使用護照和貓鼬來存盤用戶的快速服務器。用戶資料經常更改(支付令牌的數量、用戶名、驗證電子郵件地址令牌),并且 UI 必須在每次更改時顯示這些更改。
我正在過渡到 Next.js 并且仍在嘗試使用 mongodb 資料庫來存盤用戶、會話等。我想讓它保持無服務器,所以我不能使用快速服務器(盡管 afaik 是可能的)。
我目前正在將 Next-Auth 與 Credentials 提供程式一起使用,但它無法將用戶會話保存在資料庫中,因此當我的用戶資料發生更改時,它不會反映在 UI 中。
我該如何解決這個問題?我不應該為此使用下一個身份驗證嗎?
這是我的 /pages/api/auth/[...nextauth].js 檔案
import NextAuth from "next-auth/next";
import CredentialsProvider from "next-auth/providers/credentials";
import authenticateUser from "../../../lib/authenticateUser";
export default NextAuth({
providers: [
CredentialsProvider({
name: 'Login',
credentials: {
email: { label: 'E-mail', type: "email", placeholder: "[email protected]" },
password: { label: 'Password', type: "password" }
},
async authorize(credentials, req) {
const payload = {
email: credentials.email,
password: credentials.password,
};
const user = await authenticateUser(payload.email, payload.password);
return user;
}
})
],
secret: process.env.JWT_SECRET,
callbacks: {
jwt: async ({ token, user }) => {
user && (token.user = user)
return token
},
session: async ({ session, token }) => {
session.user = token.user
return session
}
},
session: {
strategy: 'jwt',
maxAge: 1 * 24 * 60 * 60, // 1d
},
jwt: {
secret: process.env.JWT_SECRET,
encryption: true,
},
})
uj5u.com熱心網友回復:
您應該查看這個repo,它向您展示了如何在 Next.js、Passport.js 和 MongoDb 之間進行集成。
指南部分將逐步進行解釋。但請依賴代碼,因為指南可能略有不同,并且未更新以反映 repo 中的當前代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450885.html
上一篇:從axios回應中反應更新狀態
