專案身份驗證方式

這份文件用「資料表與規則的關聯」整理 API 身份驗證,讓新手工程師 trace endpoint 時能快速判斷 user id 來源。

核心資料表

資料表用途主要關聯
api_sessions登入 session,解析目前登入 userapi_sessions.user_id -> users.id
security_hasheshash 授權特定資源model + foreign_id 指向目標表
api_keys呼叫端 / client 合法性對應 API key,不代表 user
users使用者主表session 或 hash 最後都會解析到 user

驗證方式總覽

驗證方式主要資料表舊專案常見程式新專案常見程式得到的身份
API keyapi_keysRestApiHelper::hasValidApiKey()ApiValidation::assertApiKey()client/app
User sessionapi_sessions, usersRestApiHelper::hasValidApiSession()ApiValidation::assertApiSession()users.id
Security hashsecurity_hashes, 目標表SecurityHash::getByHash()SecurityHash::getByHash()security_hashes.user_id

完整差異與實例請看 新舊 API 驗證對照.md

讀文件順序

  1. 常見驗證流程.md
  2. 註冊與登入入口.md
  3. 新舊 API 驗證對照.md
  4. security_hashes.md
  5. 案例/quote_requests_copy.md
  6. 多裝置登入與指定裝置登出任務規劃.md

Trace 規則

  1. 先確認 endpoint 用哪一種驗證方式。
  2. 找到該驗證方式的資料表。
  3. 確認 user id 是從 session 還是 hash record 來。
  4. 若使用 hash,確認 security_hashes.modelforeign_id 對到哪張表。