自定义Filter的基本思路是继承基类ActionFilterAttribute,并根据实际需要重写OnActionExecuting,OnActionExecuted,OnResultExecuting,OnResultExecuted这四个中的一个或多个方法。

  注意类名一定要以Attribute结尾。

  故名思义,Action执行前,执行后,结果返回前,结果返回后。所以它们的执行先后顺序就是OnActionExecuting,OnActionExecuted,Action,OnResultExecuting,OnResultExecuted。

  以下是我个人在工作中的两处实际用法分享。

 一、重写OnActionExecuting,限制请求来源。

  利用最近在做微信企业号应用开发。过程中需对所有请求来源限制为只能是微信客户端。应用是基于asp.net mvc做的,所以第一反应就是借助filter过滤器实现。

  在App_Start文件夹下新建类OutOfWeiXinAttribute,并继承ActionFilterAttribute,然后重写OnActionExecuting方法。通过 Request.UserAgent中是否包含micromessenger字符标识判断请求是否来自微信客户端,最后通过filterContext.Result设置自定义返回结果

 1 /// <summary>
 2     /// 防止应用程序在微信以外的地方打开
 3     /// </summary>
 4     public class OutOfWeiXinAttribute : ActionFilterAttribute
 5     {
 6         public override void OnActionExecuting(ActionExecutingContext filterContext)
 7         {
 8             string userAgent = filterContext.RequestContext.HttpContext.Request.UserAgent.ToLower();
 9 
10             LogHelper<OutOfWeiXinAttribute>.Debug("userAgent:" + userAgent);                                       
11             var isWeixin = userAgent.IndexOf("micromessenger") != -1;
12 
13             //以下代码只会在调试时执行
14             #if DEBUG 
15             isWeixin = true;
16             #endif
17             //
18 
19             if (!isWeixin)
20             {
21                 ViewResult view = new ViewResult();
22                 view.ViewName = "OutofWeixinApp";
23                 filterContext.Result = view;
24             }
25             else
26             {
27                 base.OnActionExecuting(filterContext);
28             }
29 
30         }
31     }
自定义Filter

相关文章:

  • 2021-10-18
  • 2021-07-01
  • 2021-06-14
  • 2021-12-14
  • 2022-12-23
  • 2021-04-09
  • 2022-12-23
猜你喜欢
  • 2022-02-07
  • 2021-09-27
  • 2021-09-27
  • 2021-06-21
  • 2021-11-03
  • 2022-02-01
相关资源
相似解决方案