.NET MVC4 ApiController拦截器的使用
目前在公司新开发了一个项目,第一次正式使用.NET MVC4来搭建,用拦截器来处理权限验证。
自定义拦截器需继承ActionFilterAttribute类,重写OnActionExecuting和OnActionExecuted方法来实现在控制器调用之前或之后切入,不过继承此类只可在Controller中使用,而非ApiController。
如果想自定义ApiController拦截器,需继承System.Web.Http.Filters.ActionFilterAttribute(类名虽一样,但命名空间不同)。
public class ApiPermissionFilter : ActionFilterAttribute
{
#region 属性 /// <summary>
/// 数据权限编码
/// </summary>
public string Code
{ get; set; } #endregion public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
UserInfo service = new UserInfo(); try
{
if (!service.IsInPermission(Code))
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
}
}
catch (Exception ex)
{
SmartCardCommon.LogHelper.WriteErrorLog(ex.Message, ex);
throw ex;
}
finally
{
SmartCardCommon.NhibernaterSessionHelper.CloseSession();
}
}
}
这样,同样可以用标记特性的方式来使用Api拦截器。
在拦截器中跳转页面,不可使用Response.Redirect方式,这样会遇到意外的错误。可以直接设置HTTP 状态码,以达到跳转到错误页的目的。
.NET MVC4 ApiController拦截器的使用的更多相关文章
- MVC webapi,Action的分别拦截器
		
继承Controller,ApiController的拦截继承的接口不一样 webapi的拦截器:(继承System.Web.Http) using System; using System.Coll ...
 - 6. ModelDriven拦截器、Preparable 拦截器
		
1. 问题 Struts2 的 Action 我们将它定义为一个控制器,但是由于在 Action 中也可以来编写一些业务逻辑,也有人会在 Action 输入业务逻辑层. 但是在企业开发中,我们一般会将 ...
 - springmvc的拦截器
		
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
 - Struts的拦截器
		
Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...
 - Struts2拦截器的执行过程浅析
		
在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...
 - 学习SpringMVC——拦截器
		
拦截器,顾名思义就是用来拦截的. 那什么是拦截,又为什么要拦截.对于Spring MVC来说,拦截器主要的工作对象就是用户的请求,拦截下来之后,我们可以在拦截的各个阶段悉心呵护[为所欲为].常见的比如 ...
 - alias拦截器的使用
		
在SSH项目中,有时需要由一个Action跳转到另一个Action.有两种方式可以实现Action之间的跳转,一种是chain,另一种是redirectAction,这两种方式之间的区别是chain是 ...
 - Struts2入门(二)——配置拦截器
		
一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...
 - 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
		
java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...
 
随机推荐
- Fetching android sdk component information
			
原文地址: Android Studio安装以及Fetching android sdk component information超时的解决方案 - sonyi - 博客园 http://www.c ...
 - python set type   集合类型的数据介绍 (set frozenset)
			
python支持数学中的集合概念,如:通过in,not in 可以检查某元素是否在,不在集合中. python有两种集合类型,set(可以变的,不能哈希,不能用作字典的key),frozenset ...
 - ActiveMQ之 TCP通讯机制
			
ActiveMQ支持多种通讯协议TCP/UDP等,我们选取最常用的TCP来分析ActiveMQ的通讯机制.首先我们来明确一个概念: 客户(Client):消息的生产者.消费者对ActiveMQ来说都 ...
 - caffe简易上手指南(二)—— 训练我们自己的数据
			
训练我们自己的数据 本篇继续之前的教程,下面我们尝试使用别人定义好的网络,来训练我们自己的网络. 1.准备数据 首先很重要的一点,我们需要准备若干种不同类型的图片进行分类.这里我选择从ImageNet ...
 - eclipse+pydev (python) 配置出错
			
错误: eclipse+pydev 配置出错,就是在选择python interpreter那一步: See error log for details.com.sun.org.apache.xerc ...
 - php discuz框架接口不能正常访问的问题
			
本人php小白,无php编程基础,直接上php服务器部署,后果很严重.....所以务必看完请给”顶“给评论,以表示对小白的鼓励和赞赏! 关于discuz框架,独自加班,废寝忘食,然已无力吐槽..... ...
 - php简单实现MVC
			
在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中.MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂 ...
 - asp.net(vs2005) + Sql2000 缓存依赖
			
1.开启数据库缓存依赖支持 开始,运行,cmd 输入 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S localhost ...
 - 在Sql Server 查询分析器里使用事务
			
declare @updatecount int begin TRAN DECLARE @tbid INTSELECT @tbid=iMax FROM tbID WHERE strName='ipcc ...
 - 【打包成exe安装包文件发布你的程序】使用QT联系人管理系统的例子
			
[前言]在 QT数据库使用案列[联系人]-- 使用sqlite和QStringListModel 中,我们写了这个程序,如何将它打包成安装文件发给其他小伙伴呢? 我们使用 nsis-2.46-setu ...