ASP.NET 4.x Web Api Odata v4 backend modify query 修改查询

有时候我们会想给予权限添加 filter 到查询上.

比如

会员和管理员都使用了

/api/products 作为 product 查询

但是会员不应该可以看见还没有上架的货品

/api/products?$filter=onMarket eq true 才是正确的

但是我们当然不可能把这个 $filter 交给前端去限制,因为这不安全嘛.

可惜的是 Web Api 并没有提供比较上层的接口去实现这个方法.

我们有好些方法可以完成上面这个事情

比如在 controller return if(member) db.products.where(p => p.onMarket == true);

但是这个无法满足 expand + filter 的场景

所以最直观的做法就是, 修改请求的 query, 通过后端添加上 $filter 进去。这样就符合我们的预期了.

refer :

https://*.com/questions/33660648/odata-v4-modify-filter-on-server-side
https://*.com/questions/33126251/webapi-odata-pre-filtering-expand-queries
https://blogs.msdn.microsoft.com/odatateam/2014/07/04/tutorial-sample-using-odatauriparser-for-odata-v4/

上一篇:Job for docker.service failed because the control process exited with error


下一篇:Centos 中如何快速定制二进制的内核RPM 包