私人工具集7——webapi中的Token时效性验证

本文探讨了如何在实际业务中验证JWT(JSON Web Token)的时效性,提出了两种策略:一是客户端携带时间戳,二是服务端记录token生成时间。针对第二种策略的存储消耗问题,提出了使用SQLite进行本地存储的优化方案,详细阐述了其实现过程,并给出了相关代码示例。

子曰:工欲善其事,必先利其器

github:https://github.com/redAntCpp/CSharpTools

紧接上篇,上篇只是实现了token的生成以及解析,顺便提到了验证机制。但是在实际业务中,通常需要对token进行时效性验证。就像去看电影,电影票当天有效,必须在有效期内进行使用,否则就需要重新买票。

token时效验证

总体思路

第一步中,有个代码:

 if (isAPIUser(UserName, PassWord))
                    {
   
   
                       //这里应该验证有效期,暂时没写,后续提供思路
                        return true;
                    }

这里应该加上时效验证。那么如何实现token的时效性验证呢,这里提供两个思路:

思路1

  1. 设置一个有效期,让客户端每次调用服务时,带上第一次获取token的时间戳(加密)。
  2. 服务端取到这个时间后,进行解密,然后加上有效期,对比当前服务器的时间,大于则有效,小于则失效,

在IsAuthorized加上这一段即可

string requestTime = httpContext.Request.Headers["rtime"]; //请求时间经过DESC签名,头文件
          if (string.IsNullOrEmpty(requestTime))return false;
            DateTime Requestdt = DateTime.Parse(Decrypt.RSADecrypt(PrivateKey,requestTime)).AddMinutes(int.Parse(TimeStamp));
            DateTime Newdt = DateTime.Now
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值