V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ghjh
V2EX  ›  编程

refresh token 的使用

  •  
  •   ghjh · 3 天前 · 1484 次点击

    想了解下各位是怎么使用 refresh token 的呢。 每次请求的请求头带上它; 还是前端配置定时器,在过期前刷新; 还是验证失败了再用 refresh token 刷新 access token 呢

    14 条回复    2024-07-05 12:22:06 +08:00
    ZZ74
        1
    ZZ74  
       3 天前
    还是验证失败了再用 refresh token 刷新 access token 呢
    2han9wen71an
        2
    2han9wen71an  
       3 天前
    我们小程序定时刷新,web 端过期后再刷新
    Blake2Wang
        3
    Blake2Wang  
       3 天前   ❤️ 2
    后端对于 token 过期返回约定的状态码,前端封装 request 请求工具类,对于 token 过期状态码,做一个 token 无感刷新,具体操作:用 refresh 刷新 token ,把 token 过期的这个请求和刷新过程中的新的请求放到待请求队列中,token 刷新完,把队列中的请求用新 token 去请求
    ghjh
        4
    ghjh  
    OP
       3 天前
    @ZZ74
    @2han9wen71an

    验证失败再刷新的话,会不会有点影响体验呢。比如用户点击了保存失败了,需要再点一次?
    LuckyLauncher
        5
    LuckyLauncher  
       3 天前
    @ghjh #4 刷新完 token 后前端再发一次保存接口
    fredweili
        6
    fredweili  
       3 天前
    refresh 当然不用用户介入,监测到 access 过期了就去 server 拿一个新的,多几个请求稍微慢一点
    2han9wen71an
        7
    2han9wen71an  
       3 天前
    @ghjh 当 access token 过期后,用户执行操作,我们会弹出一个窗口进行自动续期,续期通过后弹窗自动关闭,然后再次提交一下接口
    ghjh
        8
    ghjh  
    OP
       3 天前
    @Blake2Wang 这种对异常工况的处理会不会变得复杂呢。
    比如 refresh 失效,网络原因刷新请求没有过来等等
    ghjh
        9
    ghjh  
    OP
       3 天前
    @2han9wen71an #7 同时有多个请求的 token 过期,也会用 refresh 多次刷新么。
    Blake2Wang
        10
    Blake2Wang  
       3 天前
    @ghjh 二次封装 request ,这些逻辑写在通用的请求和响应拦截器中,我的博客很久没维护了,你直接搜索一下 token 无感刷新,看一下代码就懂了,随便找了一篇给你 https://blog.csdn.net/weixin_57909742/article/details/134310007
    iamobj
        11
    iamobj  
       3 天前
    就用 3 楼的方法,如果懒得自己手撸维护请求队列,前端好像有个 alova 请求库,内置了无感刷新 token 的策略
    ghjh
        12
    ghjh  
    OP
       3 天前
    @Blake2Wang #10
    @iamobj 好的,感谢各位。我了解一下
    ke1e
        13
    ke1e  
       3 天前
    过期了再重新请求 acess token ,不用维护 refresh token
    stephenxiaxy
        14
    stephenxiaxy  
       3 天前
    refresh_token 是不应该由三方前端持有的,而是三方后端持有的吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4590 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:54 · PVG 17:54 · LAX 02:54 · JFK 05:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.