有一个功能是当token快过期的时候,及时刷新一下token,现在的问题是,如果用户打开了多个浏览器tab,这个几个tab页面都会触发刷新token操作,如何才能实现只有一个tab页面执行刷新token操作呢
有一个功能是当token快过期的时候,及时刷新一下token,现在的问题是,如果用户打开了多个浏览器tab,这个几个tab页面都会触发刷新token操作,如何才能实现只有一个tab页面执行刷新token操作呢
tab 间通信,先触发的通知其他页面。比如说做一个时间戳,其他页面拿到时间戳和本地的做一个比较。
tab 间通信,选举一个最合适的。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
可以试试用 localStorage
,标签页加载时先到 localStorage
检查是否已存在处理 token
的标签页,不存在则注入刷新 token
作业并标记到 localStorage
中,否则注入一个检查机制(确认作业标签页是否完成--应对异常的情况),标签页关闭时清理状态记录;
这个感觉就是找到一种方式(策略),能够从众多tab页中选择出一个来触发操作,类似一个协同机制?
感觉可以在触发
刷新token
时,校验一下当前tab页是否处于可见/活动
状态。