ASP.Net MVC过滤器

一.背景

   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响应内容,只响应特定内容给那些有特定权限的用户,过滤器理论上有以下功能:

判断登录与否或用户权限

决策输出缓存

防盗链

防蜘蛛

本地化与国际化设置

实现动态Action(做权限管理系统的好东西)

二.简介

1.MVC4提供了四种过滤器

分别是:   身份验证过滤器,行为过滤器,结果过滤器,异常过滤器

分别要实现:AuthorizeAttribute,ActionFilterAttribute,ActionFilterAttribute,HandleErrorAttribute

分别要重写:OnAuthorization,OnAcitonExecuting OnActionExecuted, OnResultExecuting OnResultExecuted,OnException

2. 使用方式有两种

  A.自定义类继承自相应的类或接口,重写方法,作为特性使用

注:

使用方式一:作为Controller或Action的特性来使用

使用方式二:在全局FilterConfig中注册,是过滤器对所有Controller有好用,不需挨个加特性标识

B.在控制器类中重写方法,也可以在一个基类中重写方法 ,让子类继承,这种效果等同于将特性标识加在控制器上

三.使用

1.身份验证过滤器

a.在约束的Action执行前执行

b.重写OnAuthorization方法

c.如果不想使用默认的身份验证方式,需要将base.***删除

d.如果想进行跳转,需要设置上下文对象的Result属性为new RedirectResult(string url);

获取区域名,控制器名,方法名

string strAreaName = filterContext.RouteData.DataTokens["area"].ToString().ToLower();

string strControllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();

string strActionName = filterContext.ActionDescriptor.ActionName.ToLower();

2.异常过滤器

a.当发生异常时,用于进行自定义异步处理,如记录日志、跳转页面

b.使用自定义异常处理,需要在web.config中为system.web添加<customErrors mode="On" />节点

c.重写

OnException

方法,不要禁用base.OnException(filterContext);

d.如果想进行跳转,需要设置上下文对象的Result属性为new RedirectResult(string url);

3.行为过滤器

a.在行为被执行前、后执行的过滤器

b.重写方法OnActionExecuting(行为执行前)

c.重写方法OnActionExecuted(行为执行后)

4.结果过滤器

a.在结果被执行前、后执行的过滤器

b.重写方法OnResultExecuting(结果执行前)

c.重写方法OnResultExecuted(结果执行后)

 

FilterDemo.7z
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2016-09-22 21:13  Yaopengfei  阅读(347)  评论(0编辑  收藏  举报