[英]How to ensure that all WebAPI/OData requests pertain to a specific user?
使用WCF服務(SOAP)時,我發現此過程更加簡單,但是這里...
用戶1 .. *類別:
在公開OData RESTful服務(MVC4,WebAPI,OData)時,可以發出客戶端代碼,如下所示:
/odata/Categories?$filter=startswith(CategoryName,'paid')
甚至
/odata/Categories
將為所有用戶返回所有類別。 不是很安全。
我想確保在用戶登錄時發出的所有請求(我正在通過自己的自定義角色提供程序使用表單身份驗證)僅返回與該用戶相關的數據(其中userID = x)。 是否需要創建一個自定義過濾器,即使登錄用戶看到了傳出的WebAPI / OData請求路徑(通常在JavaScript中定義),他們也無法嘗試獲取其他用戶的信息?
數據庫中的每個導航屬性或相關表都有一個UserID字段,可在其中使用“ AND UserID = x”。
這會涉及創建類似於此頁面底部的FilterQueryValidator
(實際上是查詢附加項)嗎?
我只是不確定這是如何工作的,並且需要一些指導。
FYI:這可能與這個其他的問題,但基於用戶的要求更加具體。
您可以使用過濾器屬性,也可以在ODataContoller中覆蓋GET / POST等,以將UserID == X添加到Linq表達式中。
例如
public override IQueryable<Product> Get()
{
return _context.Products.Where(x => x.UserID == user_id);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.