MVC用filter應用
Admin
2012年7月26日
MVC用filter做權限過濾:查看原文
1:創建filter類;類須要持續一個接口,並且重寫4個辦法;如下:
1 namespace MvcApplication1.Code 2 { 3 public class paramFilter:System.Web.Mvc.ActionFilterAttribute 4 { 5 public override void OnActionuted(System.Web.Mvc.ActionutedContext filterContext) 6 { 7 base.OnActionuted(filterContext); 8 } 9 10 11 public override void OnActionuting(System.Web.Mvc.ActionutingContext filterContext) 12 { 13 if(filterContext.HttpContext.Request.QueryString["k"]=="go") 14 { 15 string retUrl = filterContext.RouteData.GetRequiredString("controller") + "/" + filterContext.RouteData.GetRequiredString("action"); 16 filterContext.HttpContext.Response.Redirect("http://" + filterContext.HttpContext.Request.Url.Host + ":" + filterContext.HttpContext.Request.Url.Port.ToString() + "/" + retUrl); 17 } 18 } 19 20 21 public override void OnResultuted(System.Web.Mvc.ResultutedContext filterContext) 22 { 23 base.OnResultuted(filterContext); 24 } 25 26 27 public override void OnResultuting(System.Web.Mvc.ResultutingContext filterContext) 28 { 29 base.OnResultuting(filterContext); 30 } 31 } 32 }
重視:此中 filterContext對象是 從頁面傳過來的。
獲取頁面controller值的辦法是 filterContext.RouteData.GetRequiredString("controller")
獲取頁面action值的辦法是: filterContext.RouteData.GetRequiredString("action")
轉到其他頁面的辦法是: filterContext.HttpContext.Response.Redirect()I
ip: filterContext.HttpContext.Request.Url.Host
端口:filterContext.HttpContext.Request.Url.Port.ToString()
2:在須要過濾的controller上加上一句代碼即可:
1 [Code.paramFilter] 2 public ActionResult Index() 3 { 4 5 return View(); 6 }