window.addEventListener('storage', (e) => {
  if (e.key === 'token' && !e.newValue) store.logout()
})

后台开了三个页签,其中一个点了退出,另外两个下一次操作全跳登录页,没保存的编辑内容一起丢了。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,登录态存在内存或者每个页签各自的 store 里,退出只清了当前页签,token 在别处还有效。下一次请求 401,拦截器统一踢回登录页。

这次卡住的地方就在「多页签登录态同步」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

处理上按这个顺序:登录态统一放 localStorage,并监听 storage 事件同步到其他页签;拦截器收到 401 先尝试静默续期,续不上再跳登录;跳登录前把当前路由和草稿存一份,回来能接着编辑。

改完只确认一件事:一个页签退出,其余页签立刻回到登录页,不用等到下一次点击。

作者 9823189