[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 管頁面」。