ASP.NET-属性与过滤器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET-属性与过滤器相关的知识,希望对你有一定的参考价值。
目的:在调用操作之前或者之后执行特定的逻辑代码
系统定义:
1.日志记录
2.防图像盗链
3.爬虫
4.本地化,用于设定区域设置
5.动态操作,用于将操作注入到控制器当中
用来过滤HTTP请求
高级编程Attribute的一种特例
1.AuthorizeAttribute通过身份验证和授权(可选)限制访问
2.HandleErrorAttribute制定如何处理由操作方法引起的异常
3.OutputCacheAttribute提供输出缓存
4.RequireHttpsAttribute强制请求通过HTTPS重新发送
过滤器的顺序就是按照下面的顺序来执行的
也可以在app_start中加入这个代码来让所有的action实现这个方法
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new logFilterAttribute()); //这一行是新加入的
}
在FilterConfig中添加新的覆写过滤规则
覆写OnActionExecuting方法,然后在Controller的action中只要添加 [logFilter] 属性就可以直接使用过滤器方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class logFilterAttribute : ActionFilterAttribute { // 在方法执行之前拦截 public override void OnActionExecuting(ActionExecutingContext filterContext) { //跳转 登录页面 if (filterContext.HttpContext.Session[ "UserName" ] == null ) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary { { "Controller" , "Account" }, { "Action" , "Login" } }); } base .OnActionExecuting(filterContext); } } |
1 2 3 4 5 | [Authorize] public ActionResult TestAuthorize() { return View(); } |
!--more-->
以上是关于ASP.NET-属性与过滤器的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core prerender webpack 错误:TypeError:无法读取属性“过滤器”
Autofac - ASP.NET Core 中的动作过滤器中的属性注入
csharp 一个过滤器属性,允许您将ASP.NET MVC视图下载为Word文档