我有一个使用Sanctum进行身份验证的Laravel应用程序。我目前正在使用Next.js 13开发一个单页应用程序(SPA),利用应用程序路由器和服务器组件。我已经成功地在使用Axios从客户端组件发出请求时检索到用户详细信息,下面是Breeze repository的示例。
然而,我很难使用fetch函数从Next.js 13中的服务器组件中检索经过身份验证的用户详细信息。我尝试在请求头中包含cookie并设置**{credentials:'include'}**,如下面的代码片段所示:
// api/user/route.ts
import { NextResponse } from 'next/server'
import { cookies } from 'next/headers'
const getHeadersWithAuth = () => {
const headers = new Headers();
headers.append('Cookie', formatCookies())
return headers;
};
const formatCookies = () => {
const cookieStore = cookies()
const result = cookieStore.getAll().map((cookie) => (
!cookie.name.startsWith("_") ? `${cookie.name}=${cookie.value}` : null
)).filter((cookie) => (cookie));
return result.join("; ");
};
export async function GET(request: Request) {
const res = await fetch(process.env.NEXT_PUBLIC_BACKEND_URL + '/api/user', {credentials: 'include', headers: getHeadersWithAuth()});
return NextResponse.json({'user': await res. text() })
}
字符串
尽管我努力了,我还是没能做到。我不确定我可能错过了什么,或者这是否可能。任何帮助或指导都将不胜感激
1条答案
按热度按时间fslejnso1#
我曾经从useAuth钩子中检索用户详细信息数据。
字符串