MVC过滤器详解

本文详细介绍了ASP.NET MVC中的过滤器,包括授权过滤器Authorize、错误处理过滤器HandleError和OutputCache缓存过滤器的使用。同时,还讲解了如何自定义过滤器以满足特定的逻辑处理需求,并通过示例代码展示了过滤器的执行顺序和应用场景。
摘要由CSDN通过智能技术生成

MVC过滤器详解

 

APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理。这时候就用到了过滤器。

  MVC支持的过滤器类型有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常)。如下表,

过滤器类型

接口

描述

Authorization

IAuthorizationFilter

此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法

Exception

IExceptionFilter

用于指定一个行为,这个被指定的行为处理某个行为方法或某个控制器里面抛出的异常

Action

IActionFilter

用于进入行为之前或之后的处理

Result

IResultFilter

用于返回结果的之前或之后的处理

  但是默认实现它们的过滤器只有三种,分别是Authorize(授权),ActionFilter,HandleError(错误处理);各种信息如下表所示

过滤器

类名

实现接口

描述

ActionFilter

AuthorizeAttribute

IAuthorizationFilter

此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法

HandleError

HandleErrorAttribute

IExceptionFilter

用于指定一个行为,这个被指定的行为处理某个行为方法或某个控制器里面抛出的异常

自定义

ActionFilterAttribute

IActionFilter和IResultFilter

用于进入行为之前或之后的处理或返回结果的之前或之后的处理

  下面介绍的过滤器中,除了上面这几种外,还多加一种过滤器OutputCache

 

1           授权过滤器Authorize

 

1.1          默认Authorize使用

  现在在网上无论是要求身份验证的地方多得是,发邮件,买东西,有时候就算吐个槽都要提示登录的。这里的某些操作,就是要经过验证授权才被允许。在MVC中可以利用Authorize来实现。例如一个简单的修改密码操作

        [Authorize]
        public ActionResult ChangePassword()
        {
            return View();
        }

它需要用户通过了授权才能进入到这个行为方法里面,否则硬去请求那个页面的话,只会得到这个结果

如果要通过验证,通过调用FormsAuthentication.SetAuthCookie方法来获得授权,登陆的页面如下

@model FilterTest.Models.LogInModel
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>Login</title>
</head>
<body>
    <div>
    @using( Html.BeginForm()){
       <div>
        ID:@Html.TextBoxFor(m=>m.UserName)
        <br />
        Password:@Html.PasswordFor(m => m.Password)
        <br />
        <input type="submit" value="login" />
       </div>
    }
    </div>
</body>
</html>

行为方法如下

        [HttpPost]//这里用了谓词过滤器,只处理POST的请求
        public A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值