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

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

  • 相关阅读:
    ID,ClientID,UniqueID的区别
    Struct构造函数
    关于sizeof,typeof
    C#文件读写
    code1
    .NET中加密与解密QueryString的方法
    addEventListener和attachEvent的区别
    执行带参数的存储过程
    如何得到机器上装的Powershell的版本
    [Gradle] How to determine OS info
  • 原文地址:https://www.cnblogs.com/shenymou/p/filter.html
Copyright © 2011-2022 走看看