fix(admin): 改密后管理面板永久「连接中断」+ 顶部版本号多一个 v

- /ws 身份在握手时确定,而 startRealtime() 全生命周期只建一次连接;改密会作废
  服务端全部会话,服务端以 1008 关闭该连接,前端对 1008 是永久停止重连
  (给真鉴权失败设计的)→ 重新登录后无人重启连接,界面一直显示「连接中断」,
  只有重开窗口才会用新会话重新握手。
  修:新增 restartRealtime(),登录成功与退出登录时各重启一次(同时修掉
  「访客浏览后登录,旧连接仍是 guest 身份」的问题);1008 语义保持不变。
- AdminLayout 顶部版本号模板写死 v 前缀,而 serverHealth 已是完整版本串
  (dev_0.1.0)→ 显示成 vdev_0.1.0。

新增 web/src/admin/tests/event-realtime.test.ts 锁该行为(临时置空 restartRealtime
会失败);为让 node --test 能加载真实 store,测试解析钩子补 @/ 别名。
This commit is contained in:
AskaEth committed 2026-09-09 23:19:23 +08:00
1 parent 27bddefaad
commit a5941be9c4
5 files changed
+125 -3

No files matched your search

+3 -1
View File
@@ -100,6 +100,8 @@ async function refresh(): Promise<void> {
async function logout(): Promise<void> {
await auth.logout()
// 会话已失效,旧连接仍是原身份,重连回落到访客态
data.restartRealtime()
toast.info('已退出登录,当前为只读访客视图')
void router.push({ name: 'dashboard' })
}
@@ -165,7 +167,7 @@ onMounted(async () => {
<span class="mx-badge" :class="`mx-badge-${connection.tone}`" :title="connection.hint">
{{ connection.text }}
</span>
<span v-if="data.serverHealth" class="version mono">v{{ data.serverHealth }}</span>
<span v-if="data.serverHealth" class="version mono">{{ data.serverHealth }}</span>
<button
class="mx-btn mx-btn-ghost mx-btn-icon"
type="button"