# 项目文档:平台账户授权登录落点 v1.0 ## 1. 项目概述 平台总后台使用 Vue 3、Vue Router、Pinia 和 Arco Design Vue。本功能使非 root 账号在登录后进入角色实际获授权的首个业务页,不再默认强制进入数据概览。 ## 2. 目录结构 ```text frontend/platform_admin/ ├── src/router/authorized-landing.ts # 授权历史地址和首个叶子菜单选择 ├── src/router/routes/base.ts # 零菜单权限页路由 ├── src/router/constants.ts # 权限守卫允许的引导页 ├── src/views/login/components/login-form.vue # 登录后加载资料并选择落点 ├── src/views/no-permission/index.vue # 尚未分配菜单权限引导 └── scripts/check-authorized-login-landing.mjs # 登录落点回归检查 ``` ## 3. 核心规则 1. 登录成功后立即读取当前账号资料和服务端菜单。 2. 登录前历史地址是有权叶子页时恢复该地址。 3. 历史地址无权、不存在或是父级分组时,从服务端已过滤菜单树中选择首个非隐藏叶子页。 4. 角色没有任何可访问菜单时进入独立 403 引导页,可在 root 分配权限后重新加载,也可退出登录。 5. 直接猜测未授权业务地址仍由前后端权限守卫拒绝,登录落点不扩大角色权限。 ## 4. 变更记录 - v1.0:新增授权登录落点解析、历史地址安全恢复和零菜单权限引导页。 - 不修改 JWT、平台角色数据、菜单分配接口和后端鉴权中间件。 ## 5. 维护指南 - 新增一级菜单时必须保持服务端排序、前端路由 `menuCode` 和叶子页名称一致。 - 不得将父级路由的硬编码重定向作为非 root 默认首页。 - 调整登录或菜单时至少执行 `pnpm auth-landing:check`、`pnpm type:check` 和 `pnpm build`。