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

时间:2019-04-24 18:36:38

标签: reactjs api authentication cookies jwt

我的设置如下。当用户通过我的前端进行登录时,我对服务器端进行了api调用,在该服务器端生成了JWT令牌,并在仅HTTP的安全cookie中发送了该令牌。从前端进行的所有后续API调用都将设置此Cookie,因此我只在处理请求之前检查服务器端。

问题在于保护前端的路由。现在,我的每个组件都有一个高阶组件。此HOC进行API调用以检查令牌的有效性。如果令牌有效,则服务器端基本上只会返回200,在这种情况下,将呈现由HOC包装的组件。如果令牌无效,则返回401,然后将用户重定向到登录页面。如您所见,每次我要渲染组件时,都必须进行API调用以检查令牌,这似乎效率很低。有没有解决的办法?我不想使用本地存储,因为我读到在那里存储JWT使得XSS攻击成为可能。

也许我可以跟踪自上次在客户端检查令牌有效性以来的时间?这样,我只能通过某个API调用来检查令牌(如果经过了一定的时间),而不是每次我想渲染组件时都要进行一次。我不确定那有多安全。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

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

如果您使用的是axios,则可以使用interceptors来实现。