zoukankan      html  css  js  c++  java
  • MVC中的过滤器/拦截器怎么写

    创建一个AuthenticateFilterAttribute(即过滤器/拦截器)

    引用System.Web.Mvc;

    public class AuthenticateFilterAttribute: ActionFilterAttribute,IActionFilter
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                // Action或Controller上定义了[AllowAnonymousAttribute]
                var hasAllowAnymous = filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) ||
                                      filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true);
    
                if (hasAllowAnymous) return; // 不需要登录,则通过。
    
                var session = filterContext.HttpContext.Session;
    
                if (session == null) return;
    
                //下面就是写过滤的条件,一般来说就是判断session是否过期,跳转到登陆页面。
                //以及判断角色,身份
    
    
    
    
            }
        }        
    AuthenticateFilterAttribute.cs

    在FilterConfig.cs中添加指定的筛选器

    public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new AuthenticateFilterAttribute());
            }
        }
    FilterConfig.cs

    在Global.asax中获取或设置全局筛选器集合。

    public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            }
        }
    View Code

    好了,这下子就完成了。在用户进行某些操作之前判断是否授权。

  • 相关阅读:
    Teamwork[HDU4494]
    The Parallel Challenge Ballgame[HDU1101]
    「JSOI2016」无界单词
    「SCOI2015」小凸玩密室
    #3636. IIIDX(iiidx)
    #2652. 背单词(word)
    「JXOI2017」加法
    拙者
    19.10.01 acm E:Lowest Common Ancestor
    #3391. big
  • 原文地址:https://www.cnblogs.com/shenymou/p/filter.html
Copyright © 2011-2022 走看看