[Lv1] 过往项目的登录机制是怎么实现的?
目标:用 3 ~ 5 分钟清楚交代「前端如何处理登录、状态维护与保护页面」,方便面试时快速回想。
1. 面试回答主轴
- 登录流程三阶段:提交表单 → 后端验证 → 存储 Token 与导航。
- 状态与 Token 管理:Pinia 搭配持久化,Axios Interceptor 自动附加 Bearer Token。
- 后续处理与保护:初始化共用数据、路由守卫、登出与例外情境(OTP、强制改密码)。
先以这三个重点破题,再依需求展开细节,让面试官感受到你具备整体视角。
2. 系统组成与职责分工
| 模块 | 位置 | 角色 |
|---|---|---|
authStore | src/stores/authStore.ts | 存储登录状态、持久化 Token、提供 getter |
useAuth Hook | src/common/hooks/useAuth.ts | 封装登录 / 登出流程、统一返回格式 |
| 登录 API | src/api/login.ts | 调用后端 POST /login、POST /logout |
| Axios 工具 | src/common/utils/request.ts | Request / Response Interceptor、统一错误处理 |
| 路由守卫 | src/router/index.ts | 依 meta 判断是否需要登录、导向登录页 |
| 初始化流程 | src/common/composables/useInit.ts | App 启动时判断是否已有 Token、载入必要数据 |
记忆法:「Store 管状态、Hook 管流程、Interceptor 管通道、Guard 管页面」。