文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>在ASP.NET MVC 中使用自定义过滤器(Filter)

在ASP.NET MVC 中使用自定义过滤器(Filter)

时间:2011-06-08  来源:七七可可

在以往的ASP.NET WebFrom 应用程序中,当我们需要验证用户权限之后才给用户跳转到相应的页面,往往需要在方法体里面写入很多的验证代码,或者就是你封装了验证代码,这样仍然显得十分的别扭,而且不利于程序的可扩展性和可维护性。然而,在ASP.NET MVC中,我们就可以彻底的解脱出来了,因为我们可以使用自定义的过滤器,它就是一个Attribute,其实在ASP.NET WebForm 中也可以这么实现,但是远远没有MVC来的爽快。下面就用一个例子来简单说明如何使用自定义的过滤器去验证用户登录。

首先:在应用程序下新建一个名为 ValidateUserLogin 的类,然后让它继承自 ActionFilterAttribute,代码如下:

 1 /// <summary>
2 /// 验证用户登录
3 /// </summary>
4 public class ValidateUserLogin : ActionFilterAttribute
5 {
6 public ValidateUserLogin() { }
7
8 /// <summary>
9 /// 重写系统动作执行前的执行方法
10 /// </summary>
11 /// <param name="filterContext"></param>
12 public override void OnActionExecuting(ActionExecutingContext filterContext)
13 {
14 //从Session中获取登录用户的实体
15 var session = filterContext.RequestContext.HttpContext.Session["UserInfo"];
16 if (session == null)
17 {
18 //如果Session中不存在登录用户的实体,则将当前请求跳转到预定义的错误页面。
19 filterContext.HttpContext.Response.Redirect("~/ErrorPages/UnLogin.html");
20 }
21 }
22
23 /// <summary>
24 /// 重写系统结果执行前的方法
25 /// </summary>
26 /// <param name="filterContext">过滤器上下文</param>
27 public override void OnResultExecuting(ResultExecutingContext filterContext)
28 {
29 //从Session中获取登录用户的实体
30 var session = filterContext.RequestContext.HttpContext.Session["UserInfo"];
31 if (session == null)
32 {
33 //如果Session中不存在登录用户的实体,则取消系统结果的继续执行。
34 filterContext.Cancel = true;
35 }
36 }

然后编译一下,在需要验证的Action上面加上属性 [ValidateUserLogin()],如下:

 1 /// <summary>
2 /// 文章管理
3 /// </summary>
4 [ValidateUserLogin(Order = 1)]
5 [MyAuthorityValidation(Order = 2)]
6 public ActionResult ArticleManage()
7 {
8 ViewData["ArticleManageBackground"] = ChosenBackground;
9 return View();
10 }
下面我不登录直接访问这个ArticleManage,地址为:http://www.cnblogs.com/twittersu/admin/ArticleManage  然后回车,于是便出现了下图所示页面:     这样便实现了使用自定义过滤器实现验证用户登录的功能,这种直接在Action头上加Attribute的方法比起在方法Action方法体里面写验证代码要小巧的多。  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载