我目前在尝试使用Next-Auth在Next.js 14应用程序中实现Axios拦截器以处理刷新令牌时遇到了一个问题。该问题似乎在Next.js的最新更新后浮出水面。
问题描述:
当我试图创建一个拦截器并使用Next-Auth中的useSession来获取拦截器的访问和刷新令牌时,就会出现这个问题。由于useSession是一个钩子,我知道它只能在客户端组件中使用,但我不知道如何有效地实现这个功能。
我正在学习一个教程(link of the video),其中的实现与我描述的完全一样,但我遇到了问题。
参考截图:
My codeThe error
具体问题:
如何在Next.js 14应用程序中使用Next-Auth有效地实现Axios拦截器,特别是考虑到使用useSession等钩子的限制?Next.js 14是否存在任何可能导致此问题的已知问题或兼容性问题?任何指导,代码片段或类似实现的参考都将非常感谢。提前感谢您的帮助!
视频截图:我严格遵循了参考视频中的说明,希望它能与Next.js 14和Next-Auth一起工作。这涉及到设置Axios拦截器并使用useSession检索令牌。
创建拦截器:我在应用程序中设置了一个Axios拦截器,打算用它来刷新令牌。
使用useSession:我尝试使用useSession钩子来访问当前会话并检索拦截器所需的令牌。
预期结果:
我期望通过遵循这些步骤,Axios拦截器将与Next-Auth无缝集成,以处理令牌刷新场景。具体来说,我期望拦截器将:
检测访问令牌何时过期。使用刷新令牌获取新的访问令牌。使用新的访问令牌重命名原始请求。实际结果:
然而,我遇到的问题可能是由于钩子的性质及其在React组件之外的使用,或者可能是由于Next.js 14中最近的一些变化。我面临的具体问题是:
在Axios拦截器设置中正确实现useSession钩子的困难。请了解在此上下文中访问和刷新令牌的正确方法。
1条答案
按热度按时间gj3fmq9x1#
我也犯了同样的错误。
问题是
useAxiosAuth()
方法既没有在React组件中调用,也没有在自定义钩子中调用(这会导致无效钩子错误)。此外,如果你看到教程视频(14:37~),导师在HomePage组件中调用
useAxiosAuth()
方法。因此,该错误与next js的最新版本无关,并且
useAxiosAuth.ts
中没有问题。