token、token过期时间

Blade 未结 1 19

一、该问题的重现步骤是什么?


我现在接手了一套代码,代码中对token中进行了存储,并对token中的JWT中的jti进行了提取作为 sessionId。

业务需求是,记录用户的访问系统的相关信息。产品是根据sessionId进行的会话区分,sessionId相同视为一次会话。


结合之前的问题现象我有如下疑问:

  1. 之前出现过,我一直在系统中操作,操作一会儿 ,可能半小时一小时左右,系统会登出 类似于token过期打到登录页面。问下,我在页面操作 token不会自动续期吗?

  2. 针对上述产品规则开发的产品,在数据库中又发现,同sessionId出现的时间超过了一个小时(页面设置的token时间是3600秒),如sessionId:3424c5d5-9a1b-4a7c-a265-ebf58e3cbdb0首次存入数据库的时间是:10:17分,然后10:20;10:49;10.50;11:28,这样的。


    这样1和2就矛盾了,1过段时间要求重新登录,2的sessionId超过设置的token有效期了还有用。


    为了验证上述现象,我在页面把token有效时间改为了60秒,超过1分钟不操作页面 没啥反应,10来分钟后仍可操作(未重启auth模块,是不是要重启认证模块)。


    

    代码中没有自己创建Token的操作,都是用的系统自带的。



二、你期待的结果是什么?实际看到的又是什么?


我想知道,1.token失效是不是以最后一次操作的时间+token有效期  

2.我在页面修改了token有效期,如何立即生效,能对问题1(token失效是不是以最后一次操作的时间+token有效期 )进行验证



三、你正在使用的是什么产品,什么版本?在什么操作系统上?


3.2  spring Clode     商用版  


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 你接手的项目改成什么逻辑我们不了解,bladex原版的逻辑是这样的:
     1. token过期是按照jwt下发的时候设置的过期时间来定的

     2. 同时配套有一个refresh_token,当token过期系统访问返回401的时候,前端会处理识别并且调用刷新token的逻辑,使用refresh_token去获取新的token进行无感刷新。如果refresh_token也过期了,那么就会刷新失败跳到登录界面(无感刷新功能是bladex4.1.0版本开始支持)
     3. jwt是无状态的,修改后无法立即生效,立即生效的只能是修改后,再创建出来的token,在这之前创建的token无法变更

    0 讨论(0)
提交回复