关于 jwt 的一点问题
1:一般使用 jwt 会添加 过期时间吧?
2:使用 jwt 添加过期时间后,怎么维护会话的的延续?
单体中httpsession 。session会话会保持30分钟,而且随着我们的请求,session会话会自动延长时间。
根据这个,一般使用 redis token 。 我们会定义一个过滤器之类的东西,拦截请求,对 Redis token的过期时间延长,这样维持我们的会话。
现在使用 jwt 如果在生成 的之后,我们设置了 过期时间 expiretime =30 分钟,那么意味着用户玩 30 分钟,就得重新登录,这个这个问题怎么解决 ??
我看网上的一些资料,说使用双 token的机制,再多定义一个 refreshToken。refreshToken 的有效期比较长。
比如 accessToken=30 分钟
refreshToken=60 分钟。
然后,后台进行校验的时候,如果 accessToken 过期了,此时校验 refreshToken。 如果 refreshToken 没有过期,那么就重新生成一个 accessToken 给前台,这样完成续签的作用。
老师,我没太理解这个机制,这样的话,59分钟的时候,来了一个请求,此时 accessToken 失效了,refreshToken 没有失效,此时重新生成了一个 accessToken 。
这样,也仅仅能够玩 60+30=90 分钟吧。
也仅仅是对时间做了一个延长,并没有做到类似于 Httpsession 那样可以不断的对会话延长吧。
还有就是使用 jwt+ 后端保存失效时间,感觉这种就更鸡肋了,后端做了工作,那还用什么jwt 啊,直接使用 redis token 不就完了。
不知道我的理解是否正确? 很纠结,希望老师给解答一下。
还有一个问题,使用jwt 的时候,在推出的时候,后端没有做任何处理,前端将其删除即可。我看网上有些人对这个也有异议:
这个 token如果在前端删除之前被其他人拿到,那么还是可以使用这个token 访问我们后台的接口,这样并不安全,好像说的也有道理哦 。 这个问题该怎么理解呢?
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星