Files
aiot-platform-ui/packages/effects
lzh 37acdcf394 feat(@vben/web-antd): 顶栏项目切换器 + 物联运维平台 SSO 无感跳转
- 顶栏 TenantDropdown 替换为 ProjectDropdown(新建 widget)
  - 进入时拉 /system/project/simple-list;仅当本地 projectId 不在列表时
    才回退到首项,避免静默改写用户选择
  - 空列表不渲染,避免出现永远空下拉
- 新增"物联运维"按钮,走 OAuth2 authorization code 流程跳 IoT 前端
  - state 使用 crypto.randomUUID() / getRandomValues() 生成(CSRF 防护)
  - VITE_IOT_BASE_URL 未配置时按钮隐藏,不再硬编码兜底 URL
  - 使用原生 <button disabled> 替代 <a role="button">,修复可访问性
- 新增 /sso-callback 回调页 + /system/sso/callback API
  - 挂载后立即 history.replaceState 清 code/state,避免二次 exchange
  - API 层做 snake_case → camelCase 映射,统一前端风格
  - 文档化 redirectUri 必须与 OAuth2 客户端 redirectUris 白名单一致
- authStore 新增 ssoLogin,与 authLogin 抽取共用 postAuthSuccess
  - token 为空直接抛错,fetchUserInfo 失败回滚 token 避免 401 循环

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:43:44 +08:00
..
2025-08-16 22:16:02 +08:00

Effects 目录

effects 目录专门用于存放与轻微耦合相关的代码和逻辑。如果你的包具有以下特点,建议将其放置在 effects 目录下:

  • 状态管理:使用状态管理框架 pinia并包含处理副作用如异步操作、API 调用)的部分。
  • 用户偏好设置:使用 @vben-core/preferences 处理用户偏好设置,涉及本地存储或浏览器缓存逻辑(如使用 localStorage)。
  • 导航和路由:处理导航、页面跳转等场景,需要管理路由变化的逻辑。
  • 组件库依赖:包含与特定组件库紧密耦合或依赖大型仓库的部分。

通过将相关代码归类到 effects 目录,可以使项目结构更加清晰,便于维护和扩展。