在检查cookie中JWT令牌的有效性时,如何避免不必要的API调用

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

我的设置如下。当用户通过我的反应前端登录时,我向服务器端发出api调用,其中生成JWT令牌并在仅HTTP安全cookie中发回。从前端进行的任何后续API调用都将设置此cookie,因此我在处理请求之前只检查服务器端。

问题在于保护我在前端的路线。现在,我有一个高阶组件包裹着我的每个组件。此HOC进行API调用以检查令牌的有效性。如果令牌有效,服务器端基本上只返回200,在这种情况下,由HOC包装的组件被渲染。如果令牌无效,则返回401并将用户重定向到登录页面。正如您所看到的,每次我想渲染组件时,我都必须进行API调用来检查令牌,这看起来非常低效。有没有解决的办法?我不想使用本地存储,因为我已经知道存储JWT会使XSS攻击成为可能。

也许我可以跟踪自从我上次在客户端检查令牌有效性以来的时间?这样我只能在已经过了一定时间的情况下进行API调用以检查令牌,而不是每次我想渲染组件时都这样做。我不确定那是多么安全。

任何帮助将非常感激。谢谢!

reactjs api authentication cookies jwt
1个回答
0
投票

创建一个中间件,用于验证当前令牌是否已过期或何时发生错误。如果响应返回错误或过期令牌,请在中间件中发出新请求,并使用新令牌更新cookie。

如果您正在使用axios,您可以使用interceptors来实现这一目标。

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