目的:在调用操作之前或者之后执行特定的逻辑代码
系统定义:
1.日志记录
2.防图像盗链
3.爬虫
4.本地化,用于设定区域设置
5.动态操作,用于将操作注入到控制器当中
用来过滤HTTP请求
高级编程Attribute的一种特例
1.AuthorizeAttribute通过身份验证和授权(可选)限制访问
2.HandleErrorAttribute制定如何处理由操作方法引起的异常
3.OutputCacheAttribute提供输出缓存
4.RequireHttpsAttribute强制请求通过HTTPS重新发送
过滤器的顺序就是按照下面的顺序来执行的
也可以在app_start中加入这个代码来让所有的action实现这个方法
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new logFilterAttribute()); //这一行是新加入的
}
在FilterConfig中添加新的覆写过滤规则
覆写OnActionExecuting方法,然后在Controller的action中只要添加 [logFilter] 属性就可以直接使用过滤器方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
class
logFilterAttribute : ActionFilterAttribute
{
// 在方法执行之前拦截
public
override
void
OnActionExecuting(ActionExecutingContext filterContext)
{
//跳转 登录页面
if
(filterContext.HttpContext.Session[
"UserName"
] ==
null
)
{
filterContext.Result =
new
RedirectToRouteResult(
new
RouteValueDictionary
{
{
"Controller"
,
"Account"
},
{
"Action"
,
"Login"
}
});
}
base
.OnActionExecuting(filterContext);
}
}
|
1
2
3
4
5
|
[Authorize]
public
ActionResult TestAuthorize()
{
return
View();
}
|