With NextAuth.js https://github.com/nextauthjs/next-auth,如何在不注销并再次登录的情况下更新会话对象内的值?
例如,一旦用户登录,我就会使用会话中存储的 URL 来显示用户的头像。
我还提供用户更改他的头像,所以我想要session.user.image
更新并持久化头像的新路径。我将所有数据存储在 MongoDB 中。我怎样才能做到这一点?目前唯一的解决方案是要求用户注销并再次登录,但这对我来说听起来不是一个可以接受的解决方案:)
我的第一个想法是在用户更新他的头像后更新此会话对象,但我不知道如何做到这一点。
import React from 'react'
import { signIn, signOut, useSession } from 'next-auth/client'
export default function Page() {
const [ session, loading ] = useSession()
return <>
{session && <>
<img src={session.user.image} />
<button onClick={signOut}>Sign out</button>
</>}
</>
}
您能做的最好的事情就是在将会话数据发送到客户端之前修改数据。
通过使用 next-auth 会话回调,我们可以轻松地做到这一点。
callbacks: {
session: async (session, user) => {
const userDatabase = await CreateAccount.findOne({
email: user.email,
}); //finding user in DB.
const userData = {
name: userDatabase.username,
email: userDatabase.email,
image: userDatabase.avatar,
id: userDatabase._id,
} // creating payload
session.user = userData; //sending payload as session
return Promise.resolve(session);
},
},
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)