检测过期的 cookie 并注销用户

时间:2021-05-06 09:40:39

标签: vue.js vuejs2 vuejs3

登录后,我有一个 cookie enter image description here。我想知道,我的应用程序是否可以检测 cookie 是否已过期,然后强制注销操作?或者只是强制路由器推送到 /login

是否需要通过 axios 拦截器响应或路由器保护来完成?

1 个答案:

答案 0 :(得分:1)

我知道你有两个选择。

选项 1(推荐)

在响应对象上设置一个 axios 拦截器,监听服务器返回的响应。特别是错误代码。如果服务器发送 401,您可以注销用户或请求新的访问令牌以保持用户登录状态。您可以使用此 npm library 来实现 axios 拦截器。使用该库,您可以提及要收听的错误代码。因此,对于所有涉及过期访问令牌的情况,我通常会从服务器发送 498 错误代码,这样我就更容易区分过期令牌和未授权令牌。

选项 2(不推荐)

您可以使用此 npm library 在前端解码 JWT 并从令牌中提取到期时间。创建一个 setInterval() 函数,定期检查当前时间是否大于或等于到期时间。如果是真正的注销用户或请求一个新的令牌。

使用选项 1,因为验证令牌或其到期时间是身份验证服务器的工作,而不是其他任何人。前端不应该负责决定令牌是否有效。此外,您不必使用 setInterval()setTimeout(),因为您还必须考虑其他边缘情况。