使用Next.js 13服务器组件和Laravel Sanctum身份验证进行用户数据检索的问题

jjjwad0x  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(88)

我有一个使用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() })
}

字符串
尽管我努力了,我还是没能做到。我不确定我可能错过了什么,或者这是否可能。任何帮助或指导都将不胜感激

fslejnso

fslejnso1#

我曾经从useAuth钩子中检索用户详细信息数据。

const { user } = useAuth({ middleware: 'auth' })

字符串

相关问题