从 jsonwebtoken 中提取过期日期时间

     2023-03-10     144

关键词:

【中文标题】从 jsonwebtoken 中提取过期日期时间【英文标题】:extract the expiration datetime from jsonwebtoken 【发布时间】:2020-02-01 16:32:24 【问题描述】:

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

所以我创建了一个从授权标头中提取令牌的中间件,它应该将令牌和到期日期时间附加到 request 对象。 signOut 路由需要日期时间才能使令牌失效。

  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();
    
  

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

【问题讨论】:

你能添加一个相关字符串的例子吗? 抱歉relevant strings 是什么意思?你的意思是一个 jwt 示例字符串? headers.authorization 中到底是什么?这个问题听起来主要是关于字符串解析,而不是关于令牌或到期日期。 啊好吧,headers.authorization 只是请求对象的授权标头 :) 但您可以忽略它并从 token 开始。它将包含从标头中提取的令牌字符串 【参考方案1】:

为了获得过期日期,您需要解码 jsonwebtoken 并访问它的 exp 密钥,如下所示:

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中从日期时间中提取日期

】在javascript中从日期时间中提取日期【英文标题】:Extractingdatefromdatetimeinjavascript【发布时间】:2012-04-0914:29:48【问题描述】:我的数据库中有一个值。如何使用javascript从此日期时间值中提取日期?1990-06-0300:00:00【问题讨论】... 查看详情

R从日期时间中提取日期

】R从日期时间中提取日期【英文标题】:RExtractdayfromdatetime【发布时间】:2014-11-2012:35:06【问题描述】:您好,我只需要保留每个日期的日期:df<-data.frame(x=c("2014-07-2400:00:00","2014-07-2400:00:00","2014-07-11","2014-07-11","2014-07-16","2014-07... 查看详情

从日期时间对象中提取日期和月份

】从日期时间对象中提取日期和月份【英文标题】:Extractdayandmonthfromadatetimeobject【发布时间】:2019-01-0706:40:27【问题描述】:我有一列日期为字符串格式\'2017-01-01\'。有没有办法使用pandas从中提取日期和月份?我已将专栏转换为... 查看详情

R:如何从时间序列中提取日期

】R:如何从时间序列中提取日期【英文标题】:R:Howtoextractdatesfromatimeseries【发布时间】:2015-05-2522:58:35【问题描述】:如何从时间序列中提取日期?这是一个时间序列:x=seq(1,768)myts<-ts(x,start=1982,frequency=24)最初我需要为rts函... 查看详情

Node.js 和 jsonwebtoken 在哪里做 JWT 过期?

】Node.js和jsonwebtoken在哪里做JWT过期?【英文标题】:WheretodoJWTexpirationwithNode.jsandjsonwebtoken?【发布时间】:2017-08-2304:45:45【问题描述】:我正在创建一个基于MEAN的Web应用程序,我有以下问题:将令牌(JWT)过期放在哪里更好?现在... 查看详情

pandas:从时间戳中提取日期和时间

】pandas:从时间戳中提取日期和时间【英文标题】:pandas:extractdateandtimefromtimestamp【发布时间】:2022-01-2319:34:01【问题描述】:我有一个timestamp列,其中时间戳采用以下格式2016-06-16T21:35:17.098+01:00我想从中提取日期和时间。我做... 查看详情

pandas:从时间戳中提取日期和时间

】pandas:从时间戳中提取日期和时间【英文标题】:pandas:extractdateandtimefromtimestamp【发布时间】:2017-02-0109:29:28【问题描述】:我有一个timestamp列,其中时间戳采用以下格式2016-06-16T21:35:17.098+01:00我想从中提取日期和时间。我做... 查看详情

从日期字符串中提取时间

】从日期字符串中提取时间【英文标题】:ExtracttimefromdateString【发布时间】:2011-03-3102:50:36【问题描述】:如何格式化"2010-07-1409:00:02"日期字符串以仅描述"9:00"?【问题讨论】:【参考方案1】:使用SimpleDateFormat... 查看详情

如何从R中具有月份名称的时间戳中提取日期

】如何从R中具有月份名称的时间戳中提取日期【英文标题】:HowtoextractdatefromtimestampthathasmonthnameinR【发布时间】:2018-01-1022:06:36【问题描述】:我需要从时间戳格式中提取日期,例如“UTC时间2017年8月2日上午7:54:31”我想以2017-08... 查看详情

从熊猫的日期时间列中提取日期和小时[重复]

】从熊猫的日期时间列中提取日期和小时[重复]【英文标题】:Extractdayandhourfromadatetimecolumninpandas[duplicate]【发布时间】:2020-06-2414:00:49【问题描述】:我有一个包含日期时间列的数据框:Date2020-01-0100:00:00...2020-02-2923:45:00如何将... 查看详情

如何从日期时间对象中仅提取月份和日期?

】如何从日期时间对象中仅提取月份和日期?【英文标题】:Howtoextractonlythemonthanddayfromadatetimeobject?【发布时间】:2017-04-0516:34:12【问题描述】:我试图做一个散点图,我的x轴需要是一年中的每一天。我首先读取数据文件并获取... 查看详情

从 NSDate 中提取日期和时间 - Objective C

】从NSDate中提取日期和时间-ObjectiveC【英文标题】:ExtractDateandHourfromNSDate-ObjectiveC【发布时间】:2016-03-3116:09:06【问题描述】:我有dateString,格式为"mm/dd/yyyy\'-\'HH:mm"。我想提取字符串中的日期和字符串中的小时。我尝试... 查看详情

从字符串转换日期和/或时间并从日期中提取季度/年时转换失败

】从字符串转换日期和/或时间并从日期中提取季度/年时转换失败【英文标题】:Conversionfailedwhenconvertingdateand/ortimefromcharacterstringandpullQuarter/YearfromDate【发布时间】:2019-12-0216:54:31【问题描述】:我有一个大整数日期列,不接受... 查看详情

从日期时间列中提取日期 - SQL Server Compact

】从日期时间列中提取日期-SQLServerCompact【英文标题】:Extractdatefromdatetimecolumn-SQLServerCompact【发布时间】:2016-09-0413:14:44【问题描述】:我使用的是SQLServerCompact4.0版本,虽然在google中找到它似乎很简单,但我尝试过的示例都不... 查看详情

无法从 BigQuery 中的时间戳中提取日期

】无法从BigQuery中的时间戳中提取日期【英文标题】:Can\'tExtractDatefromTimestampinBigQuery【发布时间】:2016-08-2903:01:06【问题描述】:我正在尝试获取上周与特定实体ID关联的所有行。每行都有一个时间戳。我想通过从日期时间时间... 查看详情

其中 jsonwebtoken 存储在服务器 nodejs 中。用户注销后如何使 JWT 过期

】其中jsonwebtoken存储在服务器nodejs中。用户注销后如何使JWT过期【英文标题】:Wherejsonwebtokenstoredinservernodejs.HowtoexpireJWTonceusergetslogout【发布时间】:2018-06-2806:41:13【问题描述】:我将令牌存储在客户端的会话/本地存储中。我面... 查看详情

熊猫:仅从日期时间列中提取日历年

】熊猫:仅从日期时间列中提取日历年【英文标题】:Pandas:ExtractingjusttheCalendarYearfromDatetimecolumn【发布时间】:2016-07-2710:22:06【问题描述】:我有一个数据框,其中有一列类似于以下列:df[\'Schedule\']=...2012-12-312013-01-012013-01-022013... 查看详情

从日期时间列中提取 YYYY-MM

】从日期时间列中提取YYYY-MM【英文标题】:ExtractingYYYY-MMfromdatetimecolumn【发布时间】:2018-11-2803:40:46【问题描述】:我有一个这种格式的数据框-var1dateA2017/01/01A2017/01/02...我希望将日期转换为YYYY-MM格式,但df[\'date\'].dtype是object。... 查看详情