码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET-属性与过滤器

时间:2016-03-23 00:36:22      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

目的:在调用操作之前或者之后执行特定的逻辑代码
系统定义:
1.日志记录
2.防图像盗链 
3.爬虫
4.本地化,用于设定区域设置
5.动态操作,用于将操作注入到控制器当中
用来过滤HTTP请求
高级编程Attribute的一种特例
1.AuthorizeAttribute通过身份验证和授权(可选)限制访问
2.HandleErrorAttribute制定如何处理由操作方法引起的异常
3.OutputCacheAttribute提供输出缓存
4.RequireHttpsAttribute强制请求通过HTTPS重新发送
过滤器的顺序就是按照下面的顺序来执行的
技术分享

也可以在app_start中加入这个代码来让所有的action实现这个方法
  1. public static void RegisterGlobalFilters(GlobalFilterCollection filters)
  2. {
  3. filters.Add(new HandleErrorAttribute());
  4. filters.Add(new logFilterAttribute()); //这一行是新加入的
  5. }


在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();
        }














ASP.NET-属性与过滤器

标签:

原文地址:http://www.cnblogs.com/weloveshare/p/5309112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!