在 TypeScript 中验证 JWT Token 并判断是否过期的示例代码:
import jwt from 'jsonwebtoken';
interface JwtPayload {
sub: string;
iat: number;
exp: number;
}
function verifyJwtToken(token: string, secret: string): JwtPayload | null {
try {
const payload = jwt.verify(token, secret) as JwtPayload;
if (payload.exp < Date.now() / 1000) {
// Token has expired
return null;
}
return payload;
} catch (error) {
// Invalid token or signature
return null;
}
}
// Usage example
const token = 'myToken';
const secret = 'mySecretKey';
const payload = verifyJwtToken(token, secret);
if (payload === null) {
console.log('Invalid or expired token');
} else {
console.log(`User ID: ${payload.sub}`);
}
该代码使用 jsonwebtoken
包来验证 JWT Token。verifyJwtToken
函数接受一个 Token 字符串和一个密钥字符串作为参数,并返回一个可选的 JwtPayload 对象。如果 Token 无效或已过期,则返回 null。否则,返回解码的 JWT 负载对象。
在此示例中,我们使用了 TypeScript 的接口来描述 JWT 负载对象。该接口定义了必须存在的 sub
、iat
和 exp
属性。sub
属性应包含用户的唯一标识符,iat
属性是 Token 的颁发时间,exp
属性是 Token 的到期时间。
在使用时,请将 myToken
替换为要验证的实际 Token 字符串,并将 mySecretKey
替换为实际使用的密钥。