突然我无法再访问注册用户的电子邮件地址。我使用NextAuth和Google作为提供商。到目前为止,一切都很顺利。实际上,注册成功后,用户的电子邮件应该由Google发送。在MongoDB数据库中,像往常一样创建用户表,并将用户与电子邮件一起保存在那里。所以这肯定和NextAuth有关因为在会话回调函数中,我在session.user得到undefined
export const authOptions: NextAuthOptions = {
adapter: MongoDBAdapter(clientPromise),
providers:[
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID!!,
clientSecret: process.env.GOOGLE_CLIENT_SECRET!!,
})
],callbacks: {
async jwt({ token, account, user }) {
if (account) {
token.accessToken = await SignToken(user.email as string)
token.id = user.id
}
return token
},
async session({ session, token, user }) {
session.user = token
//session.user is undefined
console.log(session.user)
return session
},
},
}
客户端页面:
const { data: session, status } = useSession()
if (session) {
console.log({ session });
}
输出无电子邮件等
1条答案
按热度按时间zynd9foi1#
您在
authOptions
中缺少此内容如果你把它悬停起来,你会看到这个
选择保存用户会话的方式。默认值是“jwt”,会话cookie中的加密JWT(JWE)。
但是,如果您使用适配器,我们将其默认为“数据库”。您仍然可以通过显式定义“jwt”来强制JWT会话。