token的处理及无感知刷新---个人理解向

本文探讨了如何提升用户体验,避免因token过期导致的重新登录问题。提出了使用双token(token和refresh_token)机制,当原始token过期时,利用refresh_token刷新token,确保用户能无缝继续使用系统。同时,介绍了通过监测用户活动,若半小时无操作则自动登出的设计,以增强系统的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

token是我们在登录系统后,后端会给我们返回的一个字段,我们需要在每次发送请求的时候,将token注入请求头,这样后端才能够给我们返回我们需要的信息。出于安全考虑,token的有效期一般是1-8小时,一般是2小时,那设想这样两个场景:

1.如果用户一天都在我们系统上打工,忙了九个小时,结果token过期了,没办法发送请求了,只能退出重新登录,重新获取新的token,肯定会影响用户体验的。我们需要token过期了,但是通过某种手段,让用户能够继续正常使用我们的系统,用户感觉不到。

2.用户如果一段时间,比如说半个小时,在我们的系统上没有进行任何操作,这个时候,我们应该检测到这个情况,并且让用户重新回到登录页登录。

针对1:

我们在第一次登录的时候,需要后端给我们返回两个token,假设key为token和refresh_token,第一个的时效还是1-8小时,第二个就设的更长一些,比如说半个月,当系统一直用到第一个token失效了,我们和后端协商,让他们去判断,然后返回是否失效,前端在响应拦截器中做一个判断,如果失效,就重新用第二个refresh_token,重新发一次这个判断,并且让后端重新给我们返第一个的token,然后我们存起来,之后可以继续用。

针对2:

我们在每一次发送请求的时候,在我们的响应拦截器中,都去记录一下当前的时间戳,并且更新到cookie中,这个代表着,上一次发送请求的时间戳。第二次发送请求的时候,在请求拦截器中去time.now()得到我们第二次的时间戳,并且和第一次的对比,如果时间大于半小时,就让用户跳转回登录页面重新登录。

PS:针对情况1,我们也可以使用时间戳,这样我们只需要知道token的时效时长,登录的时候记录时间戳,发送请求的时候得到当前时间戳,去进行判断,如果超时,就用第二个refresh_token.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值