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