Nextjs 14.0.3 Next auth 4.24.4 会话回调在刷新时缺少令牌,需要更改选项卡并返回以获取令牌

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

当我在生产模式下构建应用程序时出现问题,它在开发模式下运行良好。 但是,当我在本地和 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

我想在刷新后立即检索令牌,而不必先更改选项卡

next.js next-auth
2个回答
0
投票

我设法修复了它,尽管不是使用 useEffect 和 useSession hooks 中的 update() 的最佳方法


0
投票

您在使用 getServerSession 时没有错过参数吗?

您想参考一下吗? https://next-auth.js.org/configuration/nextjs#getserversession

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