我正在开发一个结合了Next.js和Django的应用程序(使用django-nextjs包)。Django使用基于会话的身份验证来管理身份验证。以下是导致该问题的事件顺序:
1.从我没有登录的主页(一个Next.js页面),我导航到一个基于Django的登录页面。
1.成功登录后,我被重定向到Next.js页面。到目前为止,一切工作正常,我可以从会话cookie访问用户数据。
1.只要我在Next.js页面之间导航,会话就保持活动状态,我就保持登录状态。
1.如果我手动输入一个需要认证的Django页面的URL或刷新页面,它会识别我的会话,并且我保持登录状态。
1.但是,如果我使用Next.js <Link />
组件导航到Django页面,我会立即注销。
令人困惑的是,在我使用<Link />
导航到Django页面之前,该会话似乎是活动的,并且可以在两个框架中识别。当我这样做时,Django不再识别我的会话。
是什么原因导致会话丢失?有没有人遇到过类似的问题,我该如何解决?
其他信息:我正在使用Next JS 13应用程序路由器。这只发生在生产环境中。在开发过程中,会话保持活动状态,并且在通过组件进行导航时不会出现身份验证问题。
1条答案
按热度按时间hc2pp10m1#
您应该使用原生html
<a />
链接来导航到不属于您的Next.js应用路由器的外部页面。<Link />
组件应该仅用于在Next.js路由之间导航。