要判断 JWT 是否过期,需要解码 JWT 并检查其过期时间(exp)是否小于当前时间戳。以下是一个示例函数,它使用 jsonwebtoken
库解码 JWT,并检查其过期时间:
import jwt from 'jsonwebtoken';
function isJwtExpired(jwtToken: string): boolean {
const decodedToken = jwt.decode(jwtToken, { complete: true });
if (!decodedToken || !decodedToken.payload.exp) {
// Payload 或 exp 不存在,JWT 是无效的
return true;
}
const currentTimestamp = Math.floor(Date.now() / 1000);
const expirationTimestamp = decodedToken.payload.exp;
return expirationTimestamp < currentTimestamp;
}
该函数接受一个 JWT 字符串作为参数,并返回一个布尔值,表示 JWT 是否已过期。如果解码失败或不存在有效的过期时间,则函数会认为 JWT 已过期。注意,该函数只能检查 JWT 是否过期,而不能确定 JWT 是否有效或未被篡改。