# 模块 4:第一天核心链路
```mermaid {scale: 0.75}
graph TD
A[用户登录] --> B[获取 token]
B --> C[获取用户信息]
C --> D[获取菜单路由]
D --> E[生成动态路由]
E --> F[进入系统页面]
F --> G[根据权限字符控制按钮]
```
---
# 调用链路 8 个检查点
1. 页面入口
2. UI 组件
3. 事件函数
4. API 调用
5. 后端 Controller
6. Service/权限
7. 前端状态更新
8. 路由/按钮生效
---
# 登录认证链路示例
用户输入账号密码 → Login 页面提交 → 调用 login API → 后端认证用户 → 返回 token → 前端保存 token → request 拦截器携带 token
**重点:** token 存在哪里?拦截器在哪里带 token?token 失效后如何处理?
---
# 用户信息与权限加载链路
登录成功 → 调用 getInfo → 后端返回 user/roles/permissions → 前端保存用户信息 → 前端保存角色和权限字符 → 后续用于按钮权限判断
**注意:** 前端拿到权限字符只能控制页面展示,不能作为后端安全边界
---
# 动态路由加载链路
调用 getRouters → 后端返回菜单树 → 前端转换为路由对象 → 动态挂载路由 → 渲染侧边栏菜单 → 用户进入页面
---
# 按钮权限链路
菜单中配置权限字符 → 角色拥有该权限字符 → getInfo 返回 permissions → 前端权限指令/方法判断 → 控制按钮显示或隐藏
---
# 后端接口权限链路
**前端按钮权限** → 只能控制 UI 展示
**后端接口权限** → 必须控制真实访问
需要确认:Controller 是否有权限注解?Service 是否校验数据权限?
---
# 操作日志链路
管理员修改用户 → 调用后端接口 → Controller 执行业务 → 日志注解/AOP 记录操作 → 写入操作日志 → 操作日志页面查询
---
# 调用链路分析 Prompt
```
@workspace 请分析若依中"登录后菜单与按钮权限生效"的完整调用链路。
从用户登录开始,依次说明:
登录页面、登录API、token、getInfo、getRouters、
动态路由、侧边栏菜单、按钮权限、后端接口权限、不确定点。
每一步标注文件路径和函数名。
```
---
# 产出:若依权限调用链路图
- 登录认证链路图
- 用户信息加载链路图
- 动态菜单路由链路图
- 按钮权限链路图
- 后端接口权限链路图
- 操作日志链路图