在 nestjs 中,我通过创建有效负载对象并对其进行签名来创建 JWT(令牌)。像这样的东西:
const jwtPayload: JwtPayload =
{
iss: issuer,
sub: info,
aud: audience,
// exp: - populated by fn: this.jwtService.sign(payload),
// iat: - populated by fn: this.jwtService.sign(payload),
jti: 'XXXX1234'
}
const signedJwtAccessToken: string = this.jwtService.sign(jwtPayload);
Nest 将 jwtPayload 编码为字符串。
对于清理工作,我想知道 JWT 的确切到期时间。这会被 .sign() 函数自动编码到 ' signedJwtAccessToken ' - 属性.exp - 中。
要在签名后立即访问它,需要对其进行解码。
在签名后立即以相同方法解码signedJwtAccessToken的最简单方法是什么?
笔记:
当 JWT 从客户端返回时,nestjs 在访问 fn: validate() 时对其进行解码,但我想在签名后立即解码 - 在向客户端发送响应之前,例如:
// signing - encoding
const signedJwtAccessToken: string = this.jwtService.sign(jwtPayload);
// decoding
const decodedJwtAccessToken: string = decodeJwt(signedJwtAccessToken);
// parsing back to an object
const updatedJwtPayload: JwtPayload = JSON.parse(decodedJwtAccessToken);
// reading property of .exp
const expires = updatedJwtPayload.exp;