如教程中 Token 在 Response body 中进行传递,并且把 Token 的替换单独做了一个路由。这种方式我觉得对于客户端来说很不友好。

我觉得应该将 Token 放在 Header 中进行传递。在登录状态下,所有接口都把 Token 放在 Response Header 中,客户端请求时也是通过 Request Header 进行传输,当 Token 失效时服务端自动刷新 Token 并把新 Token 放在 Response Header 中,客户端只要每次获得响应后自动把 Response Header 中的 Token 存储起来供下次使用,这样对于客户端开发来说 Token 的过期替换是无感的。

不然客户端在请求失败的时候必须判断一下错误码,发现是 Token 失效,然后再调用刷新 Token 接口获取新 Token,并且为了做到用户无感,还必须得保存请求信息,在刷新 Token 后再根据保存起来的请求信息重新构造请求。这样 Token 过期的情况下,一个请求实际上会变成三个请求去执行「第一次用过期 Token 请求接口 A,第二次请求刷新 Token 接口,第三次用新 Token 再次请求接口 A」,用户会感觉每xx分钟「Token 过期时间」,就感觉某个请求变的慢了。而且对于客户端开发人员来说也需要额外增加很多代码来处理请求过期的问题「尤其是客户端开发人员水平良莠不齐,很多甚至都不封装网络请求代码,对他们来说解决请求过期的问题简直是灾难」。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐