如何正确检查访问令牌是否从前端过期,即使客户端电脑时间错误



我的电脑时间比实际时间晚 2 分钟。这是因为它位于主PC时间错误的网络上。在所有情况下,这恰好是一个很好的例子,前端认为令牌没有过期,而实际上它已经过期并且后端抛出错误。

目前要知道令牌在前端是否过期,我使用以下方法:

if(  this.jwtHelper.isTokenExpired(token) ) {
  console.log ("Token expired!")
}

由于我的 pc 时间落后 2 分钟,当令牌过期时,我仍然有 2 分钟的时间前端认为此令牌仍然有效。有没有办法真正知道令牌是否过期,即使在客户端计算机上设置了错误的时间?这是我必须担心的真实用例,还是我只需要修复我的电脑时间而不担心这个问题?

我不能评论 JWT,因为它比我的应用程序需要的要多一点,但我确实使用令牌身份验证。就我而言,令牌在有效的用户名/密码身份验证后缓存在服务器上,并在过期时从缓存中逐出。提供过期令牌的客户端会抛出 401(未经授权)HTTP 错误,我的角度拦截器将其捕获为过期令牌并重新路由到登录视图。

客户端将知道服务器响应状态代码何时401。这是唯一合法的真相来源。

相关内容

最新更新