Skip to content

feat: add refresh token session flow - #89

Open
luoqiz wants to merge 1 commit into
continew-org:devfrom
luoqiz:feat-refresh-token
Open

luoqiz wants to merge 1 commit into
continew-org:devfrom
luoqiz:feat-refresh-token

Conversation

@luoqiz

@luoqiz luoqiz commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

变更类型

  • 新特性(feat)
  • 问题修复(fix)
  • 功能优化(refactor / perf / chore / style)
  • 文档变更(docs)
  • 构建、CI 或依赖升级(build / ci)
  • 测试(test)
  • 其他

破坏性变更

  • 本 PR 包含破坏性变更(BREAKING CHANGE),已在变更目的中说明影响与迁移方式

变更目的

适配后端 Refresh Token 会话机制:浏览器在 Access Token 过期后可安全刷新登录态,并在 Refresh Token 失效时统一清理前端会话;同时支持客户端 Refresh Token 策略配置与在线会话管理展示。

暂无关联 Issue。

解决方案

  • 将 Access Token 改为内存态管理,浏览器 Refresh Token 由后端 HttpOnly Cookie 承载。
  • 在请求层增加单飞刷新、401 重试和认证代次保护,避免并发请求重复刷新或迟到 401 清除新登录态。
  • 统一登录、登出、路由守卫及布局中的认证会话生命周期处理。
  • 适配在线用户的 Refresh Session 标识、客户端 Refresh Token 生命周期与传输模式配置页面。

测试情况

  • pnpm lint 通过。
  • pnpm typecheck 通过。
  • pnpm build 通过(仅有既有大体积产物提示)。

Changelog

模块 Changelog Related issues
apis / router / stores / utils / views 新增 Refresh Token 会话刷新、失效处理与客户端策略配置适配 暂无关联 Issue

提交前确认

  • 一个 PR 聚焦于 Refresh Token 会话功能,不夹带无关改动
  • 本地 pnpm lintpnpm typecheckpnpm build 三道门禁全部通过(被 lint 拦截时使用 pnpm lint:fix 修复)
  • 已完整填写 Changelog,并关联相关 Issue(暂无关联 Issue)
  • commit message 符合 Conventional Commits(约定式提交)规范
  • 如包含 AI 生成的较大改动,相关 commit 已添加 Assisted-by: <智能体> 标记
  • 目标分支正确:dev(新功能与优化)或 x.x.x 维护分支(仅 Bug 修复)

评审修复与发布协调

  • 社交登录回调页即使在白名单中也会幂等恢复浏览器会话,避免已登录用户绑定第三方账号时因整页刷新被误判为未登录。
  • 刷新遇到 429、网络或服务端临时故障时不再跳转登录页;保留 Cookie 并中止当前导航,允许后续重试恢复。
  • 清理在线用户无效排序参数,统一客户端超时字段类型,并在客户端列表展示 Refresh Token 有效期。
  • 移除与功能无关的 pnpm-workspace.yaml 构建许可文件。

必须与 continew-admin#229 同时合并和同步发布:新 UI 依赖后端刷新接口,新后端依赖 UI 读取 accessToken 字段。

跨域部署说明(withCredentials)

前端 HTTP 层已全局开启 withCredentials: true(Refresh Token 由后端写入 HttpOnly Cookie,浏览器必须以凭据模式发送请求):

  • 同域反向代理(docker nginx /api 转发、开发环境 Vite proxy)不受影响,无需额外配置。
  • 若生产改为前后端跨域直连,须开启后端 continew-starter.web.cors.enabled: true 并精确配置 allowed-origins(带凭据的 CORS 不允许 *,且必须与 auth.refresh-token.cookie-allowed-origins 白名单保持一致)。

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

🎉 恭喜 @luoqiz,这是您对 ContiNew Admin UI 仓库的首次贡献!我们衷心感谢您付出的努力。

为了保证代码库的完整性和可读性,请您在合并代码之前,确认您的代码符合项目既定的格式规范。关于代码风格和门禁检查的详细说明,请查看仓库中的 AGENTS.md

如有任何疑问,或希望获得更详细的说明,欢迎随时留言交流。此外,诚挚邀请您加入官方交流群,与项目维护团队及其他大佬用户实时交流探讨、获取第一手项目动态(入群方式详见 continew.top/discussion.html)。再次感谢您的宝贵贡献!

@CLAassistant

CLAassistant commented Sep 9, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@luoqiz
luoqiz force-pushed the feat-refresh-token branch 2 times, most recently from 0a19eb7 to 4d5d86e Compare September 20, 2026 05:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants