我按照一些在線教程在 next-auth 中實作了這個
import NextAuth from "next-auth"
import Providers from "next-auth/providers";
const https = require('https');
export default NextAuth({
providers: [
Providers.Credentials({
name: 'Credentials',
credentials: {
email: { label: "Email", type: "email" },
password: { label: "Password", type: "password" }
},
async authorize(credentials) {
const url = 'https://localhost/auth';
const httpsAgent = new https.Agent({
rejectUnauthorized: false,
});
const res = await fetch(url, {
method: 'POST',
body: JSON.stringify(credentials),
agent: httpsAgent,
headers: {
"Content-Type": "application/json"
}
})
const user = await res.json();
if (res.ok && user) {
return user;
} else {
return null;
}
}
}),
// ...add more providers here
],
callbacks: {
async jwt(token, user, account, profile, isNewUser) {
if (user?.type) {
token.status = user.type
}
if (user?.username) {
token.username = user.username;
}
return token
},
async session(session, token) {
session.type = token.type;
session.username = token.username;
return session
}
}
})
很標準。https://localhost/auth 回傳一個這樣的物件(我現在稱它為用戶)
{
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE2MzY0MTE4NjEsImV4cCI6MTYzNjQxNTQ2MSwicm9sZXMiOlsiUk9MRV9VU0VSIl0sInVzZXJuYW1lIjoiZXJuYTM5QHdlYmVyLmNvbSJ9.Abenx1GhB-_d9LVpLfa2NYp62Lbw6U65EUQowA0jA_aykx1m-BlBR_YBcL4XIJsknJ99NN8Ees4Zxdsphfhjs7du4TR2MgTITHYy-BYjBX9CsluVSBpm-L7c-oK5vu70eumAy1ixy5MKOTN2EQYCm65RszSheIwZ4LN8vSuzxzZuLszRG9nbpauiHDpYCeLrNeNkz4lhTicfWkdPafR8vhqt4MIeCl-kxbMqc35UNmglzE7n-b9zVh4OhU7bSCoPKZySL5c4GSf7UFFD-mXIe6s9b4qYSXJuLpdspFJSgP7UoEGP1gh8fTb5MDZREYyZOpK3BMU8EdwokngVR9zrbw'
}
我想知道如何存盤此令牌以用于進一步呼叫我的 API。我可以看到會話回呼中的令牌物件是
{ iat: 1636411862, exp: 1639003862 }
所以 next-aut 不是為我做這件事。我應該在會話回呼中設定一個 httpOnly cookie 嗎?或緊隨其后
if (res.ok && user) {
就在回傳用戶之前?
uj5u.com熱心網友回復:
在 dart 中,將 jwt 令牌保存在本地存盤中。然后,您可以訪問本地存盤并在會話之間保留令牌。
否則將 jwt 令牌存盤在單例或提供程式中,并在會話期間對其進行評估。
uj5u.com熱心網友回復:
您可以將其保存到 cookie。我發現這是一個非常好的模塊。https://github.com/pillarjs/cookies
uj5u.com熱心網友回復:
如果您將 JWT 存盤在 cookie 中,那么每次呼叫 API 時,您都可以檢查 cookie 標頭以查看是否有它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/353641.html
標籤:javascript 反应 下一个.js 下次验证
上一篇:JS設計模式-執行不同任務的界面
下一篇:XML“識別”標簽
