.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进行业务 ...
随机推荐
- D3D游戏编程系列(一):DXLib的介绍
这篇文章里我准备向大家介绍下我封装的一个基础D3D库:DXLib.有了这样一个类库,可以减少很多无用功以及繁琐的工作,使我们的效率大大提高. DXLib.h #define DIRECTINPUT_V ...
- Dreamweaver CS6破解教程[序列号+破解补丁]
Dreamweaver CS6破解教程[序列号+破解补丁] Adobe Dreamweaver CS6中文简体版下载地址:Dreamweaver CS6中文简体版下载[带破解] 破解之前的准备 1 ...
- 254 shades of grey
254 shades of grey Description: Why would we want to stop to only 50 shades of grey? Let's see to ho ...
- Android开发之多媒体编程之加载大分辨率图片
Android中图片占用内存的大小=图片的总像数*每个像数占用的大小. Android保存图片像素信息使用ARGB,意思是每个像素占用4个字节. 以分辨率为2400*3200的图片来说,加载到Andr ...
- RPi 2B 中文语言包
/************************************************************************* * RPi 2B 中文语言包 * 声明: * 本文 ...
- 手动启动angular
关于手动启动 angular 的问题 angular核心原理解析1:angular自启动过程 angular.element(document).ready(function() { angular. ...
- Hibernate4.x之映射关系--一对一映射
Hibernate的1-1映射关系主要分为两类: 1.Hibernate基于外键映射的1对1关联关系 对于基于外键的1-1关联,其外键可以存放在任意一边,在需要存放外键一端,增加many-to-one ...
- SharePoint 2010 出错! HTTP Error 503. The service is unavailable
转:http://544729.blog.51cto.com/534729/464087 昨天,公司的sharepoint 2010 无法打开,提示HTTP Error 503. The servic ...
- Sharepoint中用treeview来显示组织机构的人员状态的webpart
转:http://www.cnblogs.com/virusswb/archive/2009/04/28/1445517.html
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.5
Show that the inner product $$\bex \sef{x_1\vee \cdots \vee x_k,y_1\vee \cdots\vee y_k} \eex$$ is eq ...