token无感刷新【渡一教育】

作者: 渡一教育-提薪课分类: 计算机技术 发布时间: 2024-04-02 11:55:00 浏览:28773 次

token无感刷新【渡一教育】

乾坎艮坤:
我在想,这和单点也没啥关系啊!常规的登录也能这么做啊!再或者使用一个token 后端拦截器验证,给定一个阈值,比如还剩10分钟过期的时候拦截器重新生成一个新的token给前端!这么搞也是无感刷新啊!所谓的无感不就是对用户无感嘛? 有其他想法可以一起讨论!仅做学术讨论,杠没有意义

【回复】回复 @微波炉打铁 :嗯,有道理!但是在单点登录的场景下,刷新token我个人认为最大的作用是体现在安全方面! 1. token令牌确实是不建议长期有效,单点登录的语义下,用户登录某一服务,token令牌通常只做用户信息或者权限的获取无需经常性使用,所以无需设置太长的过期时间,长时间有效的 token 一旦被泄露,攻击者可以在较长的时间内使用该 token 冒充用户身份访问系统资源,造成严重的安全问题。 2. 如果客户端需要继续访问其他服务(比如访问完淘宝,去访问京东),此时因为token过期就需要重新登录此时严重影响用户体验。 3. 在以上两个规则的影响下所以有了刷新token的存在,刷新token一般采用“单次使用后刷新”、“加密存储”、“授信客户端”的形式来保证安全!其次是当access token失效后,又能使用刷新token来换取新的token,这个算是对于access token安全的补偿性操作! 个人理解,仅做讨论。
【回复】回复 @luoxgwb :刷新token一般不会放到前端去,而是在后端缓存存储!我们公司是这么设计的[笑哭]
【回复】还剩10分钟过期,后端主动更新token。这一点我感觉需要后端不断检查每一个客户端的token是否过期吧,很耗费性能。不能说等前端发请求了,我再去检查是不是还剩10分钟过期,因为有可能已经过期了
juziia_:
单点登录和jwt有啥关系,单点登录是指用户已经在sso server登录,当用户访问子系统时可以实现无需登录就可以进行访问,其原理就是业务系统判断是否有本系统认证标识,如果没有就重定向sso server进行认证,在sso server判断如果已经通过认证了就直接重定向回业务系统并且携带ticket,业务系统再通过clientid clientsecret ticket获取sso server token凭据以及用户信息,业务系统再生成自己的token返回给客户端,当然这是复杂的做法,如果简单的做业务系统和sso server通过二级域名区分,sso server生成token cookie时设置为顶级域名,业务系统就可以和sso server共用一个token了,从这个处理过程来看jwt和单点登录没有必然联系,jwt只是token的一种

simple-cpu:
有个问题,刷新token封装成promise,多次快速点击请求,万一请求刷新token接口失败了,是不是会执行多次跳转登录页面的逻辑?

【回复】视频中说了不处理异常情况,但是你要处理啊,你可以把正常的抛出去,异常的自行阻止后续啊
去米新乳:
恩,双token的意义在这个视频 BV1oE421u71n [doge] 结合食用非常清晰 刚毕业那会就研究过耶鲁大学cas的源码,大概了解了一下流程 现在随着客户端的多样化,方案也越来越多,确实挺有意思[脱单doge]

AI视频小助理:
一、如何在单点登录环境中实现token的无感刷新,通过长期有效的刷新token代替短时有效的主token,提高用户体验。 00:01 - 实现token无感刷新的前提是单点登录环境 00:41 - 服务器给客户端发送token,客户端存储在本地存储中 02:08 - 服务器发送两个token,一个过期时间短,一个过期时间长,用于刷新token 二、两种方案实现token的自动刷新,其中手动刷新方案使用AXS实现,自动刷新需要实现响应拦截器来判断是否需要刷新token。 03:00 - 两种方案:手动刷新和自动刷新 03:26 - 如何实现token的自动刷新:使用拦截器和存储token 05:25 - 自动刷新的代码应该写在哪里,以及如何判断token是否过期 三、在进行网络请求中,遇到无权限时需要刷新token并重新请求的逻辑,以及如何判断无权限并处理。同时,也提到了一些需要注意的问题。 06:01 - 拿不到的东西就是无权限的原因,需要重新请求去换新的短token。 06:49 - 重新请求需要传入之前的请求配置,否则会导致401错误。 08:49 - 开发能力是拿几K和几10K的程序员的根本差别,关键在于定义变量和循环判断的位置。 四、如何通过免费的大师课课程,短时间内最大幅度提升能力,特别是开发能力,还介绍了判断请求是否针对刷新token的逻辑。 09:01 - 大师课是短时间内提升能力的课程,免费且包含核心知识。 09:31 - 刷新token过期时会导致无穷无尽的刷新,需要判断请求地址是否针对刷新token。 11:56 - 函数需要返回刷新成功的标志,以判断是否成功刷新token。 五、如何判断刷新token是否成功,以及如何优化刷新token的逻辑,使其在不同场景下都能正常使用。同时,还介绍了一些小细节问题。 12:00 - 判断刷新是否成功,返回相应的代码和响应结果 12:42 - 刷新token的过程需要时间,可能导致其他请求等待刷新完成 14:15 - 刷新token需要封装,后续使用时无感,只需关注请求是否成功 --本内容由AI视频小助理生成,关注解锁AI助理,由@一生忽得夏司掌好年华 召唤发送

啊哈哈叫啊:
1.5倍速,快速看完,没有任何废话,错过了就回退,简直就是视频教学模版

盒子不会成精:
之前确实遇到这个需求了,原来还可以这么简单[星星眼]

拿还是不拿还是拿不拿:
没有处理一个页面同时发送多个请求的情况

【回复】回复 @橙味cheese :我是用队列实现的,保存原来请求函数并new promise保存里面的resolve,reject。 只要有一个请求401了就去收集后续的请求然后用await卡住,等刷新token结束了再重新执行队列然后释放相应的resolve,reject
【回复】回复 @拿还是不拿还是拿不拿 :这东西在刷新请求的那个文件设置一个promise变量第一次请求刷新的时候把promise函数赋值给这个变量,export这个变量,后面请求有刷新请求判断下这个变量有没有值,有证明正在请求全都加到这个变量then队列就好了,大概看了下他视频里应该也是用这种方案,本质上promise就是发布订阅的队列,没有必要自己再实现队列
【回复】回复 @橙味cheese :这是在请求函数里啊,要做到无感的话还得再次发起请求并返回原来的数据
bili-spider:
这个跟直接直接设置一个超长时间的token有什么不同呢?

【回复】长时间token是向sso服务器请求的?可能?
【回复】给打工人稍微增加一点逆向的难度,没屌用其实,能破单token就能破双token[笑哭]
【回复】refreshToken是用来再次从认证中心拿新token和新的refreshToken用的,周而复始。。。如果只有一个token的话,比如token本身5小时,然后redis辅助设置超期时间,比如4小时,redis中过期了,再用旧的token(还有1小时才过期)从认证中心获取新的token,周而复始。。但是呢redis有内存淘汰策略,可能不会按这个周期去从认证中心获取。。

计算机 零基础 编程 计算机技术 web JavaScript 前端开发 web前端开发 自学编程 前端程序员

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