MVC用filter做權限過濾:
1:創建filter類;類需要繼承一個接口,並且重寫4個方法;如下:
namespace MvcApplication1.Code
{
public class paramFilter:System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuted(System.Web.Mvc.ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
}
public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
{
if(filterContext.HttpContext.Request.QueryString["k"]=="go")
{
string retUrl = filterContext.RouteData.GetRequiredString("controller") + "/" + filterContext.RouteData.GetRequiredString("action");
filterContext.HttpContext.Response.Redirect("http://" + filterContext.HttpContext.Request.Url.Host + ":" + filterContext.HttpContext.Request.Url.Port.ToString() + "/" + retUrl);
}
}
public override void OnResultExecuted(System.Web.Mvc.ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
}
public override void OnResultExecuting(System.Web.Mvc.ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
}
}
}
注意:其中 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上加上一句代碼即可:
[Code.paramFilter]
public ActionResult Index()
{
return View();
}