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

时间:2019-01-03 20:55:06

标签: angular typescript jwt

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

当前要知道令牌是否在前端过期,我使用以下代码:

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

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

2 个答案:

答案 0 :(得分:1)

我无法对JWT进行评论,因为它比我的应用程序所需的要多,但是我确实使用令牌身份验证。在我的情况下,令牌在有效的用户名/密码身份验证后缓存在服务器上,并在过期时从缓存中逐出。呈现过期令牌的客户端抛出401(未经授权)HTTP错误,我的拦截器将其捕获为过期令牌,并重新路由到登录视图。

答案 1 :(得分:0)

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