我想知道是否有更好的方法來處理這種情況。雖然,它簡單,記住點擊次數,我試圖消除查詢。只有當用戶有權限時才返回結果
我有Books
的列表。只有分配給本書的用戶才能看到其中的書籍和其他內容。它基本上是API調用。 /Books/
,/Books/Chapters/
,/Books/Chapters/Pages/
等。權限被附加到數據庫中的Books
條目。
Books
,'章節,
Pages`等都在不同的表格中。 用戶權限存儲在不同的表中。桌子是這樣的。
UserID, BookID
--------------
101 1
102 1
102 2
...
用戶信息從API調用本身抓取(基本身份驗證)。 如果請求的Book
存在,但該用戶沒有對該Book
的權限,則API應返回401 Unauthorized
。如果請求的'書does not exist, then it should return
404找不到`。
通常,首先我需要檢查該用戶的權限以及請求的Book
的查詢。如果該用戶的用戶權限表中存在的記錄,那麼我應該運行另一個查詢來獲取Book
,「Chapter`等
目前,我梳理這兩個查詢與」 WHERE EXISTS condition that checks for the existence of the record for this user for the requested
Book`在權限表中。所以只有在用戶權限表中有記錄時纔會返回記錄。
但是,我不知道,如果Book
不存在或者如果用戶沒有權限,但我可以減少一個數據庫調用來單獨檢查用戶權限。由此,我無法區分401
和404
。
有沒有更好的方法來做到這一點,同時能夠區分401
和404
一個單一的查詢? 或者更好地做兩個數據庫調用?
您的想法?
因此,您的查詢返回結果以及用戶權限?我想如果存在的話,即使用戶沒有權限,它也會返回結果。但是,而不是1,它只是返回null? –
@凱文:沒錯。本書的結果(如果存在)總是返回。用戶訪問的確定取決於新權限列(1或NULL)的值。 –