新手想问问大家前后端分离中的token之无痛刷新
百度关键词后搜出了很多无痛刷新的文章,然后有的说是什么用户表单在输入一大堆,提交然后token过期会跳转到登录页,说这是用户体验不好。解决这个问题就说用什么无痛刷新。
我再想正常逻辑在mvc中不是应该过期就要跳转到登录页用户重新登录嘛?token过期则不应该是跳转到登录页重新登录获取新的token存储到本地的嘛?
如果token过期都不需要用户登录操作来进行换取的话,那token机制中那个过期时间还有什么意义呢?
当然了,我知道passport 还是 tymon/jwt-auth 其中都有一个token 刷新过期时间,超过那个过期时间,前端依然还是要进行跳转登录页进行登录(无痛刷新的文章就是这么说的。。) 一般刷新token过期时间比较长 有可能设置的是一个月,token过期时间可能是几个小时或者1天,可以通过这个token进行换取新的token,我寻思着那你这无痛刷新有什么意义?为什么不直接把token过期时间设置长一点??比如也把这个过期时间设置成一个月那不是和你这个无痛刷新效果不是一样嘛??
前辈们请指点一下,这使我很困惑。。。
是否有必要那么做?那么做是否可靠安全?如果这么做如果安全可靠那么它原理是什么样子呢?那如果不安全可靠要想实现所谓的无痛刷新是否还有别的解决方案?
目前,我个人的做法还都是token过期直接返回json告诉前端过期了,让前端自己处理去。。。。无论是tp还是laravel中,tp中使用的是PHP
lcobucci/jwt这个包,passport 还是 tymon/jwt-auth 都是基于它进行二次封装的。。
目前就是对于这个无痛刷新还是很迷
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
新年快乐,大年初一就开始努力了吗,这也太牛了。
token过期无非就是解决 token 泄露的问题。现在假设token已经被别人窃取,只要token没有过期,他就能够行使和你一样的权利。现在时间来到token过期的时间点,这时有两种情况,第一你比他先访问应用,这时你就会刷新并保存新的 token,窃取者的token就会失效,无法进行登录,也无法刷新token。第二种就是他比你先访问应用,他刷新并保存了新的token,这时你的token就会失效。token失效后你就需要重新登录,登录成功就会再次刷新token,窃取者的token会再次失效。所以token的有效期是有用的。以上都是我自己猜测出来的,不一定正确,这些问题我弄的也不是特别清楚。
你的疑问我之前也有想过,jwt-auth 默认是一小时,我是设置为七天,记住我是一个月,无痛刷新的我没弄。
弄了之后就是只要你有经常上线,一辈子都就不会退出,还是比较方便的,除非你是不活跃了,那么 token 失效了就比较安全了。
你的电脑让别人使用的话,不管是做什么,都不安全的,就要自己点退出了,或者弄来宾用户等。
一楼基本都把意思表达清楚了, 楼主想表达的意思无非是觉得这样没有意义, 不如把时间设置长一点
对于不通过用户登录就直接获取新 Token 觉得这个很不合理, 但是其实这都是从技术的角度出发来思考的, 实际上多久过期 怎么过期 这些都是 pm 来决定的 没必要操这个心
一般是发两个token 一个token一个refreshtoken ,token比refreshtoken的过期时间短(一般短一半的时间,token 1小时 refreshtoken 2小时) 那么当token到后端过期了 前端会使用refreshtoken到有个接口获取一个新的token和refreshtoken替换现在本地的两个token就做到自动续时了,如果两个时间都无效的话 那么就会跳转到登录页面进行重新登录
无痛刷新的前几天我弄上了,所有 CURD 都加了中间件了,除了 login、register、guest 这些。
单点、多设备这些的没弄。