登入之後,所有人看到的還是同一份清單。今天讓每個查詢都只限定在目前使用者的資料。
今天做的事
routes/todos.js 裡每一條SQL都加上user_id條件,新增時寫入user_id:
db.get(
'SELECT * FROM todos WHERE id = ? AND user_id = ?',
[Number(req.params.id), req.user.id],
...
);
清單、統計、單筆查詢、編輯、完成、刪除,一共六處都要改。
觀察
卡關
一開始不知道怎麼驗證 別人動不了我的資料。後來用兩個帳號測試:先用A新增資料並記下id,再用B的token在Thunder Client去讀取、修改、刪除A的id。
心得
資料隔離的重點不是前端怎麼顯示,而是後端每一次查詢都不能信任前端。這跟第十一天的驗證是同一個觀念:前端只是方便使用者,真正的防線在後端。