分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

mvc的过滤器学习-资料查询

发布时间:2023-09-06 02:29责任编辑:顾先生关键词:暂无标签

标题:Filtering in ASP.NET MVC

地址:https://docs.microsoft.com/en-us/previous-versions/aspnet/gg416513(v=vs.98)

ASP.NET MVC支持以下类型的操作过滤器:

  • 授权过滤器。这些实现IAuthorizationFilter并做出关于是否执行操作方法的安全决策,例如执行身份验证或验证请求的属性。的AuthorizeAttribute类和RequireHttpsAttribute类是一个授权滤波器的例子。授权过滤器在任何其他过滤器之前运行。

  • 动作过滤器。这些实现IActionFilter并包装动作方法执行。该IActionFilter接口声明了两个方法:OnActionExecuting和OnActionExecuted。OnActionExecuting在action方法之前运行。OnActionExecuted在action方法之后运行,并且可以执行其他处理,例如向action方法提供额外数据,检查返回值或取消action方法的执行。

  • 结果过滤器。这些实现IResultFilter并包装ActionResult对象的执行。IResultFilter声明了两种方法:OnResultExecuting和OnResultExecuted。OnResultExecuting在执行ActionResult对象之前运行。OnResultExecuted在结果之后运行,并且可以执行结果的其他处理,例如修改HTTP响应。所述OutputCacheAttribute类是一个结果滤波器的一个例子。

  • 异常过滤器。这些实现IExceptionFilter并在执行ASP.NET MVC管道期间抛出未处理的异常时执行。异常过滤器可用于记录或显示错误页面等任务。所述HandleErrorAttribute类是一个例外滤波器的一个例子。

的控制器类实现每个过滤接口。您可以通过覆盖控制器的On <Filter>方法来实现特定控制器的任何过滤器。例如,您可以覆盖OnAuthorization方法。可下载示例中包含的简单控制器会覆盖每个过滤器,并在每个过滤器运行时写出诊断信息。您可以在控制器中实现以下On <Filter>方法:

  • OnAuthorization

  • onException的

  • OnActionExecuting

  • OnActionExecuted

  • OnResultExecuting

  • OnResultExecuted

ASP.NET MVC中提供的过滤器

ASP.NET MVC包括以下过滤器,这些过滤器作为属性实现。可以在操作方法,控制器或应用程序级别应用过滤器。

  • AuthorizeAttribute。通过身份验证和可选的授权来限制访问。

  • HandleErrorAttribute。指定如何处理操作方法引发的异常。

     注意

    除非在Web.config文件中启用了customErrors元素,否则此过滤器不会捕获异常。

  • OutputCacheAttribute。提供输出缓存。

  • RequireHttpsAttribute。强制通过HTTPS重新发送不安全的HTTP请求。

如何创建过滤器

您可以通过以下方式创建过滤器:

  • 覆盖一个或多个控制器的On <Filter>方法。

  • 创建一个派生自ActionFilterAttribute的属性类,并将该属性应用于控制器或操作方法。

  • 使用过滤器提供程序(FilterProviders类)注册过滤器。

  • 使用GlobalFilterCollection类注册全局过滤器。

过滤器可以实现抽象的ActionFilterAttribute类。某些过滤器(如AuthorizeAttribute)直接实现FilterAttribute类。始终在操作方法运行之前调用授权过滤器,并在所有其他过滤器类型之前调用。其他操作过滤器(如OutputCacheAttribute)实现抽象ActionFilterAttribute类,该类允许操作过滤器在操作方法运行之前或之后运行。

您可以使用操作方法或控制器以声明方式使用filter属性。如果属性标记控制器,则操作筛选器将应用于该控制器中的所有操作方法。

以下示例显示了HomeController类的默认实现。在示例中,HandleError属性用于标记控制器。因此,过滤器适用于控制器中的所有操作方法。

mvc的过滤器学习-资料查询

原文地址:https://www.cnblogs.com/Tpf386/p/10254966.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved