我在使用NextAuth構建NextJs Web時遇到了一個問題。我在 pages/api 中創建了自己的 API,并使用 NextAuth 的 getSession 對其進行保護。當我使用 getServerSideProps 或 getStaticProps 呼叫 API 時,getSession 回傳空值,但當我在組件函式中呼叫 API 時,getSession 回傳用戶資料值。誰能提供幫助或有任何提示嗎?
pages/index.php?
pages/index.jsx
export async function getStaticProps(context) {
const projects = await fetchApi(`${process.env.BASE_URL}/projects`)。
console.log(projects)
回傳 {
props: {},
};
}
pages/api/projects
從'next-auth/client'匯入{ getSession }。
async function handler(req, res) {
const projectService = new ProjectService();
讓session。
讓emailUser。
嘗試 {
session = await getSession({ req });
console.log(session); // null
emailUser = session.user.email;
if (!session) {
拋出新的AuthenticationError('未認證')。
}
} catch (error) {
如果(error instanceof ClientError) {
回傳 res.status(error.statusCode).json(clientErrRes(error))。
}
回傳 res.status(500).json(serverErrRes(error))。
}
...另一個代碼
}
uj5u.com熱心網友回復:
你不能在getStaticProps中擁有auth(每個用戶),因為這些頁面是在編譯時生成的。
當你從 react 組件中呼叫 api 時(在運行時 - 從瀏覽器),你是代表用戶來做的,所以那里有一個會話(cookie)。
uj5u.com熱心網友回復:
你需要在從背景關系獲取的程序中添加頭資訊。因為你是從服務器端獲取的。
const {req}=context
const {cookie} = req.headers
return fetch(`${process.env.BASE_URL}/projects`, {
headers: {
'Cookie':cookie
}
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/319164.html
標籤:
