如何实现双token 的无感刷新和重新认证的功能,最佳技术落地方案

作者: 大伟聊前端分类: 职业职场 发布时间: 2024-03-12 16:34:36 浏览:12849 次

如何实现双token 的无感刷新和重新认证的功能,最佳技术落地方案

dadaB:
单token也可以实现这种效果,token设置两个过期时间就行

【回复】你单token还要设置两个时间,还不如直接设置一个时间,在小于什么范围之内就更新token[吃瓜][吃瓜]安全考虑还得是双token
【回复】啥呀,这种大屏不就是给人看的吗,想获取你这些数据容易得很,你几百个token调用都没啥用。,直接长token ,+数据访问权限验证,不完事了吗,搞那么麻烦。
【回复】那何必呢 refreshtoken是为了降低token暴露可能性而存在的 如果单token就没必要refresh
陈成程序员:
aop里有访问接口就重置令牌过期时间不就可以无感了嘛,而且大屏用websocket

ZERO686:
搞个续签功能用旧authToken获取新authToken怎么样, 相当于每次重置过期时间

【回复】回复 @起名字那么累 : 页面关闭了就不会再续签Token了, 存在前台的Token过段时间就过期了; 下次再访问页面就需要重新认证获取最新的Token
暴风城的将士们:
不是很理解,单token设置一个很长的过期时间不是有同样的效果吗

【回复】回复 @Dazc28 :实际上,刷新token是为了安全和用户体验下的选择,太安全了体验不好,每次操作都需要验证,肯定安全,用户就疯了
【回复】是这样,所以看我上面说的,其实这样双token已经劝退80%以上的自动爬虫了,基本上个人的都不会继续自动化了,剩下的也挡不住
【回复】回复 @luoxgwb :refreshtoken被别人拿到不也是一直用吗
边角料言午:
我使用单token,同样可以实现无感刷新和token过期踢人下线的功能。而且服务器不需要用redis。

【回复】回复 @望海清秀苹果派 : 不是,我在token里加入一个Int类型的值,每签发一次token这个值就加1,同时这个值也会保存到数据库里。如果过期的token中的这个Int值,和数据库中不一样的,或是相邻(这个阀值可以根据需求调整,一般是设置1到2)的。就说明这个token是曾经泄漏出去的。这样的话就不允许旧的token换新的token而是提示用户重新登陆。这个方案虽然不能百分百的保证token泄漏的安全。但是相比用双token的安全性是更高的。而且只有在签发token时才会查数据库,由于我存放的是一个int类型的值。所以查库的速度和性能更好。
【回复】回复 @望海清秀苹果派 :加个设备id?[doge]
【回复】回复 @望海清秀苹果派 : 当前设备登录,其他设备一库[doge]
忘记手机打卡:
18年上班时候用的方案,现在还用着呢?

从不缺神ID:
能说一下验证部分吗,例如两个人登录了同一个账号,其中一人修改密码,另一个人如何被踢下线呢

【回复】jwt是无状态的,不适合你说的这个场景。 你这个需要下线的需要后端token + redis处理
【回复】如果你已经使用了jwt又想实现这个需求又不想大改,只能在后端保存一个标记,例如用户登录或者修改密码的时间戳,用户登录后将它加载到缓存,每次请求都去对比jwt的notbefore,并且用户退出登录或者修改密码的时间同步到这个标记。
大醉涂鸦:
向大佬请教一下, refreshtoken长期有效的话, 是不是同样有暴露风险? 只是说由于请求带上refreshtoken的频率远远比带上assesstoken的频率低, 所以一定程度上降低了暴露风险?

【回复】回复 @luoxgwb :感觉双token也是脱裤子放屁,能拿到你AT的时候基本也能拿到RT了,比如偷看你电脑浏览器控制台,或者wifi窃听网络数据
【回复】增加复杂度,一定程度降低accesstoken暴露风险,没法根本解决,给到前端的东西默认是公开的
Kskzjsjs:
干嘛搞这么麻烦?直接,设置过期时间不好吗?

【回复】回复 @醉于桃李间 :抗自动化还是得谷歌验证码和cloudflare的验证码[doge]真要
【回复】回复 @醉于桃李间 :你加两个token也改变不了自动化结果[doge]
【回复】回复 @醉于桃李间 :这玩意一般为了jwt里刷新权限的,短jwt里会包含权限等信息,服务器只会验签来判断是否被篡改,并不会去查询数据库权限是否更改。只有重新签发短jwt的时候去查数据库。那么短jwt过期时间越短,权限是不是就刷新得越及时?
huangheits:
太麻烦了,搞个token自动续期不就完了,请求时判断token是否快过期了,如果快过期了自动续期就好了

【回复】但是用户一直不请求不就没法刷新了嘛

前端 代码 认证 react vue token jwt

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!