簡體   English   中英

如何確保所有WebAPI / OData請求都與特定用戶有關?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM