MVC用filter做权限过滤: 1:创建filter类;类需要继承一个接口,并且重写4个方法;如下: namespace MvcApplication1.Code { public clas
2017-05-31 16:13
330 查看
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();
}
这样就已经结束了,是不是很简单?
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();
}
这样就已经结束了,是不是很简单?
相关文章推荐
- 编写类A,该类创建的对象包含一个方法f输出英文字母表,再编写一个A类的子类B,要求必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字线表,而且调用子类新增的方法g输出希腊字
- Intellij IDEA 在创建接口后补全需要重写方法的方法
- 线程 创建和启动线程的两种方式 实现Runnable接口 继承Thread类 重写唯一方法run()
- 一个action类中写多个方法需要继承MappingDispatchAction
- java中,一个类实现某个接口,必须重写接口中的所有方法吗?
- java 学习 私有类实现接口 ,一个类继承来的方法和接口实现方法重复第八天
- 在Android项目中创建一个包含main()方法的类,直接右键运行该类时会报如下错误:ShouldNotReachHere()
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- MyEclipse中,当我们写一个类实现一个接口时,会自动生成重写该接口的方法,但是,方法的参数提示不够好,是什么原因导致的呢?该如何解决呢?
- java笔记(三)[java中的继承&java中的方法重载,重写,重构&java中的向上转型和乡下转型&java中的抽象类和接口&java中的接口向上转型]
- java中,一个类实现某个接口,必须重写接口中的所有方法吗
- aspx里构造函数里无法使用session,需要重写一个方法放在load里面就能正常使用session了
- 创建一个对象,字母存储在一个数组中,并且用一个方法可以将字母连在一起,显示成一个单词
- asp.net MVC利用ActionFilterAttribute过滤关键字的方法
- C# 反射-通过继承接口实现创建对象并调用方法
- 继承与合成基本概念 继承:可以基于已经存在的类构造一个新类。继承已经存在的类就可以复用这些类的方法和域。在此基础上,可以添加新的方法和域,从而扩充了类的功能。 合成:在新类里创建原有的对象称为合成。
- java中,一个类实现某个接口,必须重写接口中的所有方法吗???
- linux进入一个目录以及在目录中创建文件所需要的权限
- 创建多个电脑账户需要赋予不用的权限方法
- 当编写一个实体类去实现一个接口,或者抽象类时,在重写的方法上一直提示remove掉@Override;