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://stackoverflow.com/questions/33660648/odata-v4-modify-filter-on-server-side
https://stackoverflow.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/
ASP.NET 4.x Web Api Odata v4 backend modify query 修改查询的更多相关文章
- [转]Web API OData V4 Keys, Composite Keys and Functions Part 11
本文转自:https://damienbod.com/2014/09/12/web-api-odata-v4-keys-composite-keys-and-functions-part-11/ We ...
- [转]How to Use Web API OData to Build an OData V4 Service without Entity Framework
本文转自:http://www.odata.org/blog/how-to-use-web-api-odata-to-build-an-odata-v4-service-without-entity- ...
- node-odata: ASP.NET WEB API OData的替代品
什么是 OData 协议? OData, 相信身为 .NET 程序员应该不为陌生, 尤其是它的实现: ASP.NET WEB API OData. 对于 OData, 官网上对其的定义是 OData ...
- 使用ASP.Net MVC5 Web API OData和Sencha Touch 开发WebAPP
使用ASP.Net MVC5 Web API OData和SenCha Touch 开发WebAPP Demo 效果 第一步 创建数据库 创建表 第二步 搭建MVC,并导入OData 第三步,写入We ...
- vs2012 + web api + OData + EF + MYsql
vs2012 + web api + OData + EF + MYsql 开发及部署 先说下我的情况,b/s开发这块已经很久没有搞了,什么web api .MVC.OData都只是听过,没有实际开发 ...
- 在Windows下编写并运行第一个ASP.NET 5 Preview Web API程序
2015年07月21日在微软中国MSDN的官方微博上得知Visual Studio 2015正式版完美发布. 抱着尝鲜的心态下载了Visual Studio社区版本. 在这个首发的版本里面,我们可以看 ...
- vs 2013下自定义ASP.net MVC 5/Web API 2 模板(T4 视图模板/控制器模板)
vs 2013下自定义ASP.net MVC 5/Web API 2 模板(T4 视图模板/控制器模板): Customizing ASP.NET MVC 5/Web API 2 Scaffoldi ...
- ASP.NET MVC+Knockout+Web API+SignalR
架构设计(ASP.NET MVC+Knockout+Web API+SignalR) 架构设计(ASP.NET MVC+Knockout+Web API+SignalR) 2014-01-16 18: ...
- Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看
Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看 來自TechEd North America 2013的第一手消息 以下資訊均 ...
随机推荐
- Linux一些基本配置
Linux发行版:centos 6.5 配置yum源 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -P /etc/yum.repos ...
- suse 12sp1 oracle 11g r2 时出现错误 调用/sysman/lib/ins_emagent.mk的目标nmo时出错
要因为C库的问题,解决办法就是手动指定C库位置出现agent nmhs问题后,找到$ORACLE_HOME/sysman/lib/ins_emagent.mk文件,在文件里找字符串 $(MK_EMAG ...
- 关于typeid和typeof
typeid和typeof是c++/gcc编译器的两个关键字,也就是操作符,所以他们根本就不会声明在头文件中. 只不过typeid返回的是type_info,它定义在<typeinfo>头 ...
- linux下mysql 8.0安装
安装本身同mysql 5.7,仍然建议使用tar.gz解压版,而非rpm安装包版. mysql已经将之前的mysql_native_password认证,修改成了caching_sha2_passwo ...
- CEF 文件下载
转载:https://blog.csdn.net/liuyan20092009/article/details/53819473?locationNum=6&fps=1 转载:https:// ...
- 深刻理解Python中的元类(metaclass)以及元类实现单例模式
在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Python中这一点仍 ...
- Git冲突与解决方法【转】
本文转载自:https://www.cnblogs.com/gavincoder/p/9071959.html Git冲突与解决方法 1.git冲突的场景 情景一:多个分支代码合并到一个分支时: 情景 ...
- IP/子网掩码/网关/广播地址
判断两个IP是否处于同一子网(网段) 广播地址的作用是什么? 每天一个linux命令(52):ifconfig命令 什么是IP地址.子网掩码.路由和网关
- 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!
https://www.cnblogs.com/zhbsh/archive/2013/04/22/3035477.html 用C#.NET调用Java开发的WebService时,先在客户端封装的带有 ...
- 消息队列之ActiveMQ简单环境搭建
准备: 环境:win7,Eclipse,jdk1.8 ActiveMQ版本:ActiveMQ 5.9.0 Release下载地址:http://activemq.apache.org/download ...