【问题标题】:Detect expired cookie and logout user检测过期的cookie并注销用户
【发布时间】:2021-05-06 09:40:39
【问题描述】:

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

是否需要通过 axios 拦截器响应或在路由器守卫中完成?

【问题讨论】:

    标签: vue.js vuejs2 vuejs3


    【解决方案1】:

    据我所知,您有两个选择。

    选项 1(推荐)

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

    选项 2(不推荐)

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

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

    【讨论】:

    • 为什么我的服务器返回500代码而不是401
    • 500 通常是内部服务器错误。这可能有很多原因。我建议您创建一个新问题来解决该问题,并确保将错误消息与问题中的堆栈跟踪一起共享。
    猜你喜欢
    • 2021-07-31
    • 2020-02-10
    • 2019-10-11
    • 2020-03-06
    • 2018-08-11
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多