我在使用 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 将附加数据成功插入到用户会话中吗?任何见解或建议将不胜感激。
我已经解决了问题:在 fetchData 函数中,我使用的是具有相对路径的 Axios。通过切换到绝对路径,一切都解决了。问题似乎在于 API 调用必须使用 NextAuth API 中的绝对路径进行,这与客户端页面不同。如果有人还有什么要补充的,我将不胜感激。