怎么方便全局维护 token, , 有效期二个小时, 快过期的时候主动发请求更新

2022-06-26 18:22:40 +08:00
 xpyusrs

用什么方案能优雅的实现, 有很多份 token 需要维护, 用定时任务的话, 得设置成千上万个

3787 次点击
所在节点    Go 编程语言
29 条回复
BeijingBaby
2022-06-27 09:51:46 +08:00
写一套通用维护 token 的工具 /框架

使用方从这个框架 Get token 。

框架内部维护有效期,有个 goroutine 来将快过期的 token 续期。
CodeJr
2022-06-27 10:31:06 +08:00
就像 steam pc 和手机 认证一样的采用同样的密钥生成算法
joesonw
2022-06-27 10:50:40 +08:00
用时间轮,全局一个 ticker 就好了。
hopingtop
2022-06-27 11:04:22 +08:00
更新这个操作,分摊到客户端, 去检测你下发 token 的过期 时间戳。他检测到 快 过期,在主动触发 服务端。 然后你 服务端,只需要一个 代价很小的 轮询 补偿机制就行了。 不知道这样能够解决你的问题?
xtinput
2022-06-27 15:04:15 +08:00
用之前判断有效期进行更新,或者后台返回指定错误码,然后收到错误码之后更新再尝试上一个请求
seth19960929
2022-06-27 17:47:44 +08:00
怕无效请求就这样子:
A token 请求 -> 没过期正常使用

A token 请求 -> 过期了 -> 正常返回数据 -> 在 response header 增加一个 token 字段返回 B token -> 客户端所有请求拦截判断 response header 有 token 就更新到本地 做到无痛更新

A token 过期了, 有并发请求过来, 上锁存储生成的 token 到 redis, 设置过期时间为 3s(自己决定), 3s 内的请求(包含被锁住的那些)直接返回 redis 存储的 token, 3s 后代表全是失效的请求
dzdh
2022-06-27 19:11:10 +08:00
go 不是自带锁吗
zhuweiyou
2022-06-28 07:20:50 +08:00
来请求的时候再判断要不要更新,这种场景为什么要主动去轮.
abctt
2022-06-30 23:50:21 +08:00
搞这么麻烦 session 不会用了吗,舍本求末

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862312

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX