本地存储,SPA中的Jwt和浏览器的重新加载按钮

问题描述

在具有ajax调用的SPA中,如果按下浏览器的重新加载按钮,则不会发送jwt(或其他参数),来自不带jwt的服务器的响应为401。如何处理这种情况?

我已经用一种方法解决了它,但我不知道这是否是件好事:

1-在每个ajax调用之前,我都会存储(本地存储)一个带有查询参数和我要访问的路径的json(jwt是不必要的,因为它也独立保存在localstorage中)

2-当您单击浏览器中的重新加载时,防火墙检测到未发送jwt,并将我重定向到未经授权的页面401

3-在此页面上(未经授权),我有一个事件,加载结束时查找jwt是否存在于localstorage中,如果存在,它还将使用参数和路径来检索json。

4-对发送参数json和jwt的路径进行新的ajax调用,如果接收到成功的响应,它将从服务器接收正确的页面显示它,否则显示未授权的401

使用pushState播放会显示正确的路径。 Jwt始终在承载授权标头中发送它。服务器准备使用参数的json而不是请求中的普通参数。我使之复杂化是因为每个ajax请求都包括接收一对新的密钥(jwt和refresh令牌),这些密钥将覆盖现有值并再次向服务器发出相同的请求。未经授权的页面首先显示加载的gif,当它收到响应时,将显示未经授权的401或正确的页面

您如何看待该解决方案?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)