我正在尝试将具有Auth0身份验证的Next.js应用程序移动到新的应用程序路由器。我理解服务器组件不能写入cookie的局限性,但我得到了一个令人困惑的消息。
我的理解是,如果我需要在服务器组件上获取用户信息,我需要使用'@auth0/nextjs-auth0'
中的'getSession'
函数,这对客户端组件不可用。
但是,每次我调用它时,服务器控制台都会记录以下消息(未标记为错误或警告):"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>
)
}
字符串
在上面的代码中,每次调用getSession
时,服务器控制台都会发出消息"nextjs-auth0 is attempting to set cookies from a server component"
。
我没有明确地尝试设置cookie,只是获取用户的信息。我想知道为什么会发生这种情况,以及忽略该消息的影响是什么。
再次,提前感谢任何帮助。
1条答案
按热度按时间x6h2sr281#
只要您不尝试自己手动设置cookie,就可以安全地忽略警告消息。一个贡献者在4天前修复了这个问题:https://github.com/auth0/nextjs-auth0/pull/1328
要解决此问题,请更新库。没有必要做任何其他事情。