会话已断开:为保障账号安全,您已退出登录;当前未保存内容仍在编辑框中,请先复制备用,再点击右上角头像重新登录。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用户在码上飞AI平台操作过程中,页面突然弹出“登录过期”提示,但未说明原因、未提供跳转入口、也未保留当前编辑内容,导致输入的长文本直接丢失。你需要立即改写该提示文案,使其具备明确引导性、状态可感知、操作可恢复。
定位登录过期提示的触发位置
打开浏览器开发者工具(F12)→ 切换到 Network 标签页 → 在码上飞AI页面执行任意需鉴权的操作(如点击「生成代码」按钮)→ 找到返回 401 状态码的请求 → 点击该请求 → 查看 Preview 或 Response 内容,确认后端返回的是 { "code": 401, "message": "Login expired" } 这类原始字段。
这一步必须做,否则你修改的前端文案可能和后端实际抛出的错误类型不匹配,导致提示根本不会出现。
替换默认弹窗为语义化轻提示
进入 src/components/ErrorHandler.vue(或类似全局错误拦截文件)→ 找到处理 401 状态的分支 → 将原本的 this.$message.error('登录已过期') 替换为:
this.$notify({ title: '会话已断开', message: '为保障账号安全,您已退出登录。当前未保存的内容仍在编辑框中,请先复制备用,然后点击右上角头像重新登录。', type: 'warning', duration: 0 });
duration: 0 表示该提示不自动关闭,避免用户来不及阅读就消失。不要用 MessageBox.alert,它会阻塞页面交互,用户无法复制编辑区内容。
增强登录态校验与缓存保护
方法一:在路由守卫中前置检查
打开 src/router/index.js → 在 beforeEach 钩子内添加逻辑:若 localStorage.getItem('auth_token') 存在但调用 /api/v1/user/profile 返回 401,则立即触发登出流程并缓存当前 route.path 和页面内富文本内容(如 tinymce.getContent() 或 ref.value.innerHTML)到 sessionStorage。
方法二:监听 fetch 全局异常
在 main.js 中重写 window.fetch → 对所有响应体解析后判断 response.status === 401 且 !response.url.includes('/login') → 触发自定义事件 window.dispatchEvent(new CustomEvent('auth-expired', { detail: { unsaved: getCurrentEditorContent() } }))。
【务必在触发登出前完成编辑内容抓取】 否则 sessionStorage 里存的是空字符串。
登录页自动带回原路径与草稿
第一步:登录接口成功响应后,从 sessionStorage 取出 redirect_path 字段 → 调用 router.push({ path: redirect_path })。
第二步:在目标页面 mounted 钩子中检查 sessionStorage 是否存在 draft_content → 若存在,则填充至编辑器,并清空 sessionStorage.draft_content。
第三步:在登录表单提交成功后的 then 回调里,设置 sessionStorage.setItem('redirect_path', sessionStorage.getItem('pending_route') || '/dashboard')。
注意:pending_route 必须在用户被拦截跳转前就存入,比如在路由守卫里检测到 401 的瞬间就执行 sessionStorage.setItem('pending_route', to.fullPath)。


















