Nextjs 14.0.3 Next auth 4.24.4 session callback在刷新时缺少token,需要更改tab并返回以获取token

k5ifujac  于 2024-01-07  发布在  其他
关注(0)|答案(1)|浏览(115)

当我在生产模式下构建应用程序时出现了这个问题,它在开发模式下运行正常。但是当我在本地和Vercel上以生产模式运行时,刷新页面时会话令牌丢失。但是当我更改浏览器选项卡或打开另一个视图并返回时,页面被重新渲染,会话令牌被设置。

async jwt({ token, user, account, profile, isNewUser }) {
            console.log("jwtCallback_Token", token);
            console.log("jwtCallback_User", user);
            console.log("jwtCallback_Account", account);

        

            if (account && account.provider !== "cognito_google") {

                token = { ...user }

            }

            else if (account?.provider === "cognito_google") {

                token = {
                    id_token: account.id_token,
                    access_token: account.access_token,
                    refresh_token: account.refresh_token,
                    cust_exp: user?.exp,
                    picture: user?.picture,
                    email_verified: user?.email_verified,
                    email: user?.email,
                    sub: user?.sub,
                    name: user?.name

                }
            }
            return token


        },
        async session({ session, token, user }) {
            console.log("session-s", session);
            console.log("session-t", token);
            console.log("session-u", user);

            session.access_token = token.access_token

            return session

        },

字符串
我正在使用客户端组件与const { data: session, status } = useSession()
并使用session?.access_token检索令牌
我想在刷新后立即检索令牌,而不必先更改选项卡

dly7yett

dly7yett1#

我设法修复了它,尽管使用useEffect和来自useSession钩子的update()不是最好的方法

相关问题