zoukankan      html  css  js  c++  java
  • mvc 过滤器

    1.mvc 过滤器分为 授权-行为-异常

    2.授权,自定义授权。先走OnAuthorization,然后内部调用AuthorizeCore方法,如果返回true 就跳转指定的路径,如果返回false 就内部跳转到授权异常HandleUnauthorizedRequest方法。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace 过滤器.Filter {
        public class MYAuthorization : AuthorizeAttribute {
    
            public override void OnAuthorization(AuthorizationContext filterContext) {
                base.OnAuthorization(filterContext);
            }
            protected override bool AuthorizeCore(HttpContextBase httpContext) {
                var v=CookieHelper.GetCookie("aa");
                if (v == "") {
                    return false;
                }
                else {
                    return true;
                }
            }
            protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
                //filterContext.Result = new JsonResult() { Data = new { AuthorizeMessage = "您需要登陆"}, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
                filterContext.Result = new RedirectResult("/Login/Index?ReturnUrl=" + filterContext.HttpContext.Request.Url.ToString().Replace(filterContext.HttpContext.Request.Url.Port.ToString(), string.Empty));
            }
            protected override HttpValidationStatus OnCacheAuthorization(HttpContextBase httpContext) {
                string l = "sss";
                return HttpValidationStatus.Invalid;
            }
        }
    }

    3.异常筛选器

      只要是有报错就会走这个方法,并且会跳转到指定的页面

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace 过滤器.Filter {
        public class MYHandleErrorAttribute : HandleErrorAttribute {
            public override void OnException(ExceptionContext filterContext) {
                if (!filterContext.ExceptionHandled) {
                    filterContext.ExceptionHandled = true;
                    filterContext.Result = new ViewResult() { ViewName = "/Views/Shared/MyError.cshtml" };
                }
            }
        }
    }

    4.行为过滤器

    MYActionFilter 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    namespace 过滤器.Filter {
        public class MYActionFilter : ActionFilterAttribute {
    
            public override void OnActionExecuted(ActionExecutedContext filterContext) {
    
            }
            public override void OnActionExecuting(ActionExecutingContext filterContext) {
    
            }
            public override void OnResultExecuted(ResultExecutedContext filterContext) {
            }
            public override void OnResultExecuting(ResultExecutingContext filterContext) {
    
            }
        }
    }
  • 相关阅读:
    java jdk1.8 32/64位 官方绿色版下载附安装教程
    坡度常用的表示方法
    就此道别
    阿里巴巴矢量图标库(iconfont)批量全选的方法
    thinkphp6.0 集成Alipay 手机和电脑端支付的方法
    法定的属于我的第23个年头已经结束,在今天迎来第24年的第一天。
    世界地图展开图,来自 Simon's World Map
    thinkphp6.0 composer 安装 web-token/jwt-framework 常见出错原因分析及解决方法
    thinkphp6 常用方法文档
    Python获取列表中的最后一个或者倒数第几个的方案
  • 原文地址:https://www.cnblogs.com/elsons/p/9759922.html
Copyright © 2011-2022 走看看