📜  检查令牌是否过期 - Javascript (1)

📅  最后修改于: 2023-12-03 15:10:51.963000             🧑  作者: Mango

检查令牌是否过期 - Javascript

在使用JWT(JSON Web Token)进行认证和授权时,很重要的一点就是要检查令牌是否过期。如果一个过期的令牌被使用,可能会导致安全问题。

常见的JWT包括3个部分:Header、Payload和Signature。其中Payload中包含了过期时间(exp)。

{
  "iss": "issuer",
  "sub": "subject",
  "aud": "audience",
  "exp": 1624610718,
  "iat": 1624610118,
  "data": {
    "username": "john",
    "isAdmin": false
  }
}

在服务器端,我们可以使用以下代码来检查JWT是否过期:

function isTokenExpired(token) {
  const decodedToken = jwt.decode(token, {complete: true});
  const currentTime = Date.now() / 1000;
  if (decodedToken.payload.exp < currentTime) {
    return true;
  } else {
    return false;
  }
}

这个函数接收一个JWT作为参数,解码Token并检查exp字段是否小于当前时间。如果小于,则说明JWT已经过期。

使用方式:

const token = 'eyJhbG...';
if (isTokenExpired(token)) {
  console.log('Token is expired!');
} else {
  console.log('Token is not expired!');
}

以上是在服务器端检查JWT是否过期的方法。在客户端,我们可以将JWT的exp字段保存在localStorage中,然后在每个API请求中,检查这个字段是否小于当前时间。如果小于,则说明JWT已经过期。

function isTokenExpired() {
  const currentTime = Date.now() / 1000;
  const exp = localStorage.getItem('exp');
  if (exp < currentTime) {
    return true;
  } else {
    return false;
  }
}

以上就是在Javascript中检查JWT是否过期的方法。在使用JWT进行认证和授权时,一定要记得检查JWT是否已经过期。