無法在 api 呼叫中使用 getSession({req}) 獲取會話資料?組件上的 useSession() 作業正常。
包版本:[email protected]、[email protected]
問題:api/lists.ts:
import prisma from "../../../lib/prisma";
import { getSession } from "next-auth/react"
export default async (req: NextApiRequest, res: NextApiResponse) => {
const session = await getSession({ req });
console.log('session data is always null', session);
nexuauth.js 組態檔:
callbacks: {
session: async ({ session, user, token }) => {
if (session?.user) {
session.user.id = user.id;
}
// console.log('session callback', session);
return session;
},
},
session: { strategy: "database" },
_app.js 檔案:
function MyApp({ Component, ...pageProps }) {
return (
<SessionProvider session={pageProps.session} refetchInterval={5 * 60}>
<Main>
<Component {...pageProps} />
</Main>
</SessionProvider>
)
}
export default MyApp
在 login.js 檔案上(作業正常):
export default function Login() {
const { data: session } = useSession()
uj5u.com熱心網友回復:
會話取決于 cookie,您的瀏覽器會自動發送 cookie。所以useSession(),在客戶端/瀏覽器上總是有效的。但是當你使用getSession cookies時不會自動出現,我們需要手動設定它們(github問題)-
const response = await fetch(url, {
headers: {
cookie: req.headers.cookie || "",
},
});
要自動添加這些,您也許可以插入interceptors(axios,fetch)或創建一個wrapper函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484649.html
