繁体   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