c# 自定义MVC 权限拦截器


1 拦截器简介

c#拦截器主要功能是动态拦截Action调用对象,
拦截器提供相关函数,使开发者可以在action执行前后执行指定的代码,
达到验证操作的目的,
通过拦截器,
开发人员可以让action停止运行


拦截器主要应用于

权限拦截模块
日志监控模块
特殊字符监控
用户登录监控(多用户不同地点登陆监控)
反盗链系统


2 自定义拦截器举例说明


2.1 拦截器实现

 namespace frameWorkWeb.Filter
{

   [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
   public   class FilterRole:FilterAttribute,IActionFilter
    {
       //定义权限Id 
       private string roleId_ = "";
       public FilterRole()
       { 
           
       }
        //定义权限Id 传入
       public FilterRole(string roleId)
       {
           roleId_ = roleId;
       }


       //action 执行前执行函数
       void IActionFilter.OnActionExecuting(ActionExecutingContext filtercontext)
       {

           var sessionId = HttpContext.Current.Session["userId"];  //获取session
           if (sessionId == null)
           { 
               //session 获取失败 跳转至未登录页面
               filtercontext.Result = new HttpUnauthorizedResult();
               return;
           } 

           //无权限进入
           if (roleId_ != "")
           {

               //加入验证当前用户是否存在此权限代码
	       //...
	       //...
	       //...
               filtercontext.Result = new RedirectResult("~/Login/NoRole");
               return;
           }

       }

       //action 执行后执行函数
       void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
       { 
        
       }

    }
}



2.2 拦截器应用

        [FilterRole("customInfo")]
        public ActionResult LoginCheck()
        {
             
	 }