專案身份驗證方式
這份文件用「資料表與規則的關聯」整理 API 身份驗證,讓新手工程師 trace endpoint 時能快速判斷 user id 來源。
核心資料表
| 資料表 | 用途 | 主要關聯 |
|---|---|---|
api_sessions | 登入 session,解析目前登入 user | api_sessions.user_id -> users.id |
security_hashes | hash 授權特定資源 | model + foreign_id 指向目標表 |
api_keys | 呼叫端 / client 合法性 | 對應 API key,不代表 user |
users | 使用者主表 | session 或 hash 最後都會解析到 user |
驗證方式總覽
| 驗證方式 | 主要資料表 | 舊專案常見程式 | 新專案常見程式 | 得到的身份 |
|---|---|---|---|---|
| API key | api_keys | RestApiHelper::hasValidApiKey() | ApiValidation::assertApiKey() | client/app |
| User session | api_sessions, users | RestApiHelper::hasValidApiSession() | ApiValidation::assertApiSession() | users.id |
| Security hash | security_hashes, 目標表 | SecurityHash::getByHash() | SecurityHash::getByHash() | security_hashes.user_id |
完整差異與實例請看 新舊 API 驗證對照.md。
讀文件順序
- 常見驗證流程.md
- 註冊與登入入口.md
- 新舊 API 驗證對照.md
- security_hashes.md
- 案例/quote_requests_copy.md
- 多裝置登入與指定裝置登出任務規劃.md
Trace 規則
- 先確認 endpoint 用哪一種驗證方式。
- 找到該驗證方式的資料表。
- 確認 user id 是從 session 還是 hash record 來。
- 若使用 hash,確認
security_hashes.model和foreign_id對到哪張表。