JWT (JSON Web Token) 是一种用于身份验证的标准方法。JWT 由三部分组成,分别是头部、载荷和签名。其中载荷部分可以包含过期时间(exp)。
在 TypeScript 中使用 JWT ,可以通过以下方式设置过期时间:
import * as jwt from 'jsonwebtoken';
const payload = {
// 载荷部分
username: 'example',
exp: Math.floor(Date.now() / 1000) + (60 * 60), // 过期时间为 1 小时后
};
const secret = 'your_secret_key'; // 秘钥
const token = jwt.sign(payload, secret); // 签名生成 JWT
在上述代码中,我们设置了载荷部分的 exp
字段为当前时间加上 1 小时的时间戳。这意味着 JWT 将在下一个小时内有效,在此之后将被视为无效。
当客户端发送请求时,服务器需要验证 JWT 是否过期。可以使用 jsonwebtoken
库中的 verify()
方法进行验证:
import * as jwt from 'jsonwebtoken';
const token = ... // 客户端传来的 JWT
try {
const decoded = jwt.verify(token, 'your_secret_key');
console.log(decoded); // 输出解码后的结果
} catch (err) {
console.error(err);
}
verify()
方法将返回解码后的对象。如果 JWT 已过期,将抛出错误并提示“jwt expired”。
总之,使用 TypeScript 和 JSON Web Token 可以轻松地实现身份验证。设置过期时间是确保安全性的重要方法之一,应该在实现身份验证时加以考虑。