gpt4 book ai didi

javascript - 从 jsonwebtoken 中提取到期日期时间

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:47 36 4
gpt4 key购买 nike

要使 token 无效,据我所知,存储 token 及其过期日期时间到数据库的最佳方法。要验证它,您只需从数据库中选择它,如果它存在,您就知道它已失效。此外,您可以根据过期日期时间从数据库中删除每个过期 token 。

因此,我创建了一个中间件,从授权 header 中提取 token ,并将 token 和到期日期时间附加到 request 对象。 signOut 路由需要日期时间来使 token 失效。

  async use(req: any, res: Response, next: NextFunction) {
try {
const headers: IncomingHttpHeaders = req.headers;
const authorization: string = headers.authorization;
const bearerToken: string[] = authorization.split(' ');
const token: string = bearerToken[1];

if (await this.authenticationsRepository.findByEncodedToken(token)) { // invalidated token?
throw new Error(); // jump to catch
}

req.tokenPayload = verifyToken(token); // calls jwt.verify with secret
next();
} catch (error) {
throw new UnauthorizedException();
}
}

但是如何从 token 中提取 exp 属性来计算到期日期时间?

最佳答案

为了获取到期日期,您需要解码 jsonwebtoken 并访问它的 exp key ,如下所示:

let token = jwt.sign({
data: 'foobar'
}, 'secret', { expiresIn: '1h' });


var decoded = jwt.decode(token, { complete: true });
console.log(decoded.payload.exp);

在你的情况下,我认为你可以这样做:

req.expirationTime = jwt.decode(token, { complete: true }).payload.exp;

关于javascript - 从 jsonwebtoken 中提取到期日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58217713/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com