在 Next.js 中使用 NextAuth 将附加数据插入用户会话时出现问题

问题描述 投票:0回答:1

我在使用 NextAuth 将附加数据插入 Next.js 应用程序的用户会话时遇到问题。具体来说,我试图将从 API 获取的数据添加到会话中,但它没有按预期工作。这是我的 NextAuth 配置的相关部分:

callbacks: {
signIn: async ({ user, account, profile, email, credentials, session }) => {
    return true;
},
jwt: async ({ token, user, trigger, session }) => {
    if (user) {
        const lab = await fetchData('/api/lab/list/' + user.email)
        token.role = user.role
        token.user = user
        token.lab = lab
    }
    return token
},
session: async ({ session, token, user }) => {
    session.user.role = token.role
    session.user.id = token.user.id
    session.user.lab = token.lab
    return session;
},

},

在 jwt 回调中,我使用 fetchData('/api/lab/list/' + user.email) 获取其他用户数据,并尝试将此数据添加到令牌中。但是,lab 变量返回 null,因此 token.lab 未正确设置。这会导致 session.user.lab 在会话回调中未定义。

我单独测试了fetchData函数,它工作正常,返回了预期的数据。因此,我很困惑为什么 lab 在这种情况下返回 null。

有人可以帮助我理解为什么会发生这种情况以及如何使用 NextAuth 将附加数据成功插入到用户会话中吗?任何见解或建议将不胜感激。

session next.js callback jwt next-auth
1个回答
0
投票

我已经解决了问题:在 fetchData 函数中,我使用的是具有相对路径的 Axios。通过切换到绝对路径,一切都解决了。问题似乎在于 API 调用必须使用 NextAuth API 中的绝对路径进行,这与客户端页面不同。如果有人还有什么要补充的,我将不胜感激。

© www.soinside.com 2019 - 2024. All rights reserved.