zoukankan      html  css  js  c++  java
  • asp.net mvc重写RequestValidator

      /// <summary>
        /// <httpRuntime requestValidationType="xxx.CustomRequestValidator" />
        /// </summary>
        public class CustomRequestValidator : RequestValidator
        {
            public readonly static object CustomRequestValidatorKey = new object();
    
            protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource,
                string collectionKey, out int validationFailureIndex)
            {
                var obj = context.Items[CustomRequestValidatorKey];
                if (obj != null)
                {
                    var notValid = (RequestNotValidationSource)obj;
                    if (notValid == RequestNotValidationSource.All)
                    {
                        validationFailureIndex = 0;
                        return true;
                    }
                    RequestNotValidationSource tmp;
                    if (Enum.TryParse(requestValidationSource.ToString(), out tmp) && notValid.HasFlag(tmp))
                    {
                        validationFailureIndex = 0;
                        return true;
                    }
                }
                return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);
            }
        }
    
        /// <summary>
        /// 重写验证逻辑
        /// </summary>
        [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
        public class CustomRequestValidatorAttribute : FilterAttribute, IAuthorizationFilter
        {
            /// <summary>
            /// 不验证哪些数据
            /// </summary>
            public RequestNotValidationSource? NotValidationSource { get; set; }
    
            public CustomRequestValidatorAttribute()
            {
                NotValidationSource = null;
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="notValidationSource">不验证哪些数据</param>
            public CustomRequestValidatorAttribute(RequestNotValidationSource notValidationSource)
            {
                NotValidationSource = notValidationSource;
            }
    
            public virtual void OnAuthorization(AuthorizationContext filterContext)
            {
                filterContext.HttpContext.Items[CustomRequestValidator.CustomRequestValidatorKey] = NotValidationSource;
            }
    
        }
    
        /// <summary>
        /// 不验证哪些数据
        /// </summary>
        [Flags]
        public enum RequestNotValidationSource
        {
            QueryString = 1,
            Form = 2,
            Cookies = 4,
            Files = 8,
            RawUrl = 16,
            Path = 32,
            PathInfo = 64,
            Headers = 128,
            All = 256
        }
  • 相关阅读:
    菜鸟的it之路-起航
    实验报告四
    实验报告三
    实验报告二
    实验报告一
    远程连接
    操作系统安装
    服务器硬件组成
    linux系统下排查cpu过高原因
    windows系统下排查Java项目cpu过高原因
  • 原文地址:https://www.cnblogs.com/lizhanglong/p/5145924.html
Copyright © 2011-2022 走看看