【发布时间】:2012-11-28 02:32:22
【问题描述】:
我想知道是否有更好的方法来处理这种情况。虽然它很简单,记住点击次数,但我试图消除一个查询。
我有Books 的列表。只有分配给这本书的用户才能看到其中的书籍和其他内容。它基本上是 API 调用。 /Books/、/Books/Chapters/、/Books/Chapters/Pages/等。权限附加到数据库中的Books条目。
Books、'Chapters,Pages`等都在不同的表中。
用户权限存储在不同的表中。表是这样的。
UserID, BookID
--------------
101 1
102 1
102 2
...
从 API 调用本身获取用户信息(基本身份验证)。
如果请求的Book 存在,API 应该返回401 Unauthorized,但用户没有对该Book 的权限。如果请求的“Bookdoes not exist, then it should return404 Not found”。
通常,首先我需要通过查询检查该用户和请求的Book 的权限。如果该用户的用户权限表中存在该记录,那么我应该运行另一个查询以获取Book、'Chapter` 等。
目前,我正在将这两个查询与权限表中的“WHERE EXISTScondition that checks for the existence of the record for this user for the requestedBook”结合起来。所以只有在用户权限表中有记录时才会返回记录。
但是有了这个,我不知道Book是否不存在或者用户没有权限,尽管我可以减少一个数据库调用来单独检查用户权限。有了这个,我无法区分401和404。
有没有更好的方法来做到这一点,同时能够通过单个查询区分 401 和 404?
还是最好进行两次数据库调用?
你的想法?
【问题讨论】:
标签: mysql permissions