使用 Auth0 在 Next.js 13 服务器组件上获取用户信息时如何避免出现警告消息

Ped*_*ida 8 auth0 server-side-rendering next.js

我正在尝试将具有 Auth0 身份验证的 Next.js 应用程序移动到新的应用程序路由器。我了解服务器组件无法写入 cookie 的限制,但我收到一条令人困惑的消息。

我的理解是,如果我需要获取服务器组件上的用户信息,我需要使用'getSession'from 的函数'@auth0/nextjs-auth0',该函数不适用于客户端组件。

但是,每次我调用它时,服务器控制台都会记录以下消息(未标记为错误或警告):"nextjs-auth0 is attempting to set cookies from a server component"

我不想设置任何cookie,只是获取用户信息。谁能帮助我理解为什么这个调用使'getSession'组件设置cookie?另外,如果我并没有真正尝试设置 cookie,忽略此消息是否安全?

提前致谢。

添加代码:完整的解决方案有点复杂,但这段代码说明了我的问题。这是一个简单的 SSR 组件,它从服务器会话中获取用户名(按照 Auth0 的格式指定):

import { getSession } from '@auth0/nextjs-auth0';

export default async function Profile() {
    const session = await getSession();

    return (
    <div>
        HELLO {session?.user?.name}
    </div>
    )
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,每次getSession调用服务器控制台都会发出消息"nextjs-auth0 is attempting to set cookies from a server component"

我没有明确尝试设置cookie,只是获取用户的信息。我想了解为什么会发生这种情况以及忽略该消息会产生什么影响。

再次提前感谢您的帮助。

小智 8

我也对此感到困惑,因此我单步执行了与 相关的代码getSession(在我的例子中,这是由 调用的withPageAuthRequired)。看起来,由于 中的默认配置@auth0/nextjs-auth0,每当您访问服务器上的缓存会话时,都会尝试自动设置新的 cookie(此处为代码)。AUTH0_SESSION_AUTO_SAVE=false发现PR 后,我停止了这种行为和警告。如果我们决定在项目中重新启用滚动会话,我将遵循此处的建议。