标签:记录 前端 校验 token session 刷新 超时 本人
单纯记录下个人对前后端中token的使用理解,有意见看法的请赐教(我不听)
JWT
是指java web token,专门用于web应用的一种数据格式
前后台校验逻辑
前端登录
后台获取登录信息校验
后台校验成功后返回token(基本包含access_token和refresh_token有时会包含一个access_token的过期时间)
前台拿到token存储到cookie或者localstage中
以后每次请求都会携带token
分情况讨论
1.如果使用session
首先如果是单例服务可以使用,如果是分布式的得先解决分布式session问题
然后看session处理token
后台登录成功以后获取session,然后将登录的信息缓存后放到session中
以后每次请求不需要携带token,后台可以获取到session并获取到session
如果有自动刷新,后台校验token失效后可再拿refreshtoken刷新access_token
刷新后的token重新缓存,并重新放入session中
放缓存是因为刷新token需要使用到
2.不使用session
后台生成token并缓存
将token和登录信息给前端返回
前端获取token并存储到cookie或者localstage中
以后的请求头中都设置从cookie中获取的token
后端截取token做校验
这里有几个情况:
如果使用refreshtoken
如果前台只存储accesstoken,后台缓存的时候用唯一值比如解析的userid之类的缓存两个token,然后如果accesstoken超时了就获取refreshtoken再刷新然后需要给前端返回,让前端保存
前端发送两个token,后台判断accesstoken过期后再使用refreshtoken刷新,刷新完成后得重新给前端返回刷新后的token
前端访问静态页面不访问接口怎么校验是否登录超时
有没有登录就只能检查是否有token或者随便调用一个接口看看是否能访问
这里个人想法是给前端返回token的时候带上超时时间(可以比真正的超时时间小一点),然后前端校验如果超时再掉一下token刷新
Session的情况怎么处理
如果存在单纯的静态资源访问可以考虑设置session、cookie的超时时间,但是这种情况不好刷新token除非考虑使用定时任务刷新token,或者考虑在静态页面中添加一个后端请求。
Token刷新方案
前端定时刷新
前端请求拦截器(在发送正式接口之前先给后台发送校验的请求(或者带超时时间就直接校验)如果超时后台刷新好之后给前端,前端存储,再发送正式请求再或者每次请求之前直接刷新简单粗暴)
第二种方案相对好一点,因为第一种方案始终会有延迟
不管是怎么处理,适合项目才是最好的!
标签:记录,前端,校验,token,session,刷新,超时,本人 来源: https://blog.csdn.net/huaruanIT/article/details/110092845
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。