• 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
        }
  • 相关阅读:
    魔控(电脑遥控器)
    百度网盘不限速下载网页版
    2019计算机科学与技术实训认识以及总结
    压缩文件破解
    废旧手机改造第二弹之电脑扩展屏幕和变成复制屏幕
    废旧手机改造之家居监控器
    关于志愿填报的一点点东西(大佬对计算机专业认识)
    html恶搞之无限弹窗
    java重点知识点整理
    推荐一个学java的网站
  • 原文地址:https://www.cnblogs.com/lizhanglong/p/5145924.html
Copyright © 2020-2023  润新知