表單到收款:做出能接單的網站 · 第 04 章

登入後只看得到自己的訂單

使用者登入後可以查自己的訂單;管理者才能查全部。每次 API 查詢都要驗證身分與權限。

貓老闆的簡報

客人不能改個網址就看到隔壁桌買了什麼,管理訂單的入口也不能誰都進得去。

——貓掌櫃官網的老闆「掌櫃」下需求時的原話

這章做什麼

採用專案既有登入功能或成熟的身分服務,將訂單綁定登入者,完成使用者與管理者的存取範圍。

動手做

  1. 請 AI 盤點既有登入方式;若沒有,先選一個適合目前後端的成熟登入方案,依官方文件設定測試帳號,不自行設計密碼儲存方式。
  2. 建立訂單時,由伺服器從有效登入狀態取得使用者識別,忽略前端傳入的訂單擁有人。
  3. 訂單查詢、取消與付款 API 都確認訂單屬於目前使用者;管理者另有受保護的查詢入口。只隱藏按鈕並不足夠。
  4. 用兩個虛構帳號 A、B 練習:A 建立訂單後,B 改網址或直接呼叫 API 仍不能讀取或修改。登出後也不能使用原本頁面繼續操作。

親手試試

模擬:尚未登入,只顯示登入入口,不提供訂單資料。

模擬:可查看 A 的訂單;請求 B 的訂單時,後端拒絕提供資料。

模擬:後端確認管理者角色後,才允許查看待處理訂單。

只是權限情境示意;這裡切換分頁不會真的登入,也不是權限保護的實作。

圖 C3-04 選擇不同身分,說明後端應該允許哪些操作。

這樣對 AI 說

中文就可以
請檢查目前登入機制,沿用成熟方案,將訂單綁定到伺服器認定的登入者。查詢、取消和建立付款時都檢查登入與訂單擁有權;一般使用者只能操作自己的訂單,管理者才能查看全部。不要信任前端傳入的使用者識別或角色。請提供兩個虛構測試帳號 A、B 的驗收步驟,包含改網址、直接呼叫 API、登出後繼續操作;記錄預期與實際結果。

本章驗收清單

用別人的帳號測一次,比只看正常畫面更能確認權限。

  • 訂單擁有人由後端決定
  • B 無法讀取或修改 A 的訂單
  • 登出後 API 拒絕訂單操作
  • 管理者查詢入口也有後端權限檢查

這章的相關詞條

詞條頁都有可以動的示範——卡住的時候,去把名詞弄清楚,回來繼續做。

進度只存在這台瀏覽器,不上傳、不追蹤。