Exemple #1
0
 public ReturnData(int code)
 {
     this.code  = code;
     this.msg   = CodeMsg.FirstOrDefault(c => c.Key == code).Value;
     this.data  = data;
     this.count = 0;
 }
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            CodeMsg codeMsg;
            var     exception = actionExecutedContext.Exception;

            if (exception is Error error)
            {
                codeMsg = error.CodeMsg;
            }
            else
            {
                codeMsg = CodeMsg.UnknownError().Msg(exception.Message);
            }
            var    method = actionExecutedContext.Request.Method.Method;
            object value;

            if (HttpMethod.GET.Equals(method))
            {
                value = codeMsg.Msg();
            }
            else
            {
                value = codeMsg.Build();
            }

            actionExecutedContext.Response =
                actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, value);
        }
Exemple #3
0
        public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);
            filterContext.ExceptionHandled = true;

            CodeMsg codeMsg;
            var     exception = filterContext.Exception;

            if (exception is Error error)
            {
                codeMsg = error.CodeMsg;
            }
            else
            {
                codeMsg = CodeMsg.UnknownError().Msg(exception.Message);
            }

            var method = filterContext.HttpContext.Request.HttpMethod;

            if (Constants.HttpMethod.GET.Equals(method))
            {
                filterContext.Result = codeMsg.BuildContentResult();
            }
            else
            {
                filterContext.Result = codeMsg.BuildJsonResult();
            }
        }
        /// <summary>
        /// 从请求中获取token,失败则抛出异常
        /// </summary>
        /// <param name="actionContext"></param>
        /// <returns></returns>
        /// <exception cref="Error"></exception>
        private static string GetToken(HttpActionContext actionContext)
        {
            var token = TryGetToken(actionContext);

            if (string.IsNullOrEmpty(token))
            {
                throw CodeMsg.TokenRequired().BuildError();
            }

            return(token);
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var stringBuilder = new StringBuilder();
            var modelState    = filterContext.Controller.ViewData.ModelState;

            if (!modelState.IsValid)
            {
                foreach (var item in modelState.Values)
                {
                    foreach (var error in item.Errors)
                    {
                        stringBuilder.AppendLine(error.ErrorMessage);
                    }
                }

                throw CodeMsg.InvalidArg().FillArgs(stringBuilder.ToString()).BuildError();
            }

            var actionDescriptor     = filterContext.ActionDescriptor;
            var controllerDescriptor = actionDescriptor.ControllerDescriptor;
            var args       = filterContext.ActionParameters;
            var argDefInfo = actionDescriptor.GetParameters();

            foreach (var argDef in argDefInfo)
            {
                if (argDef.IsDefined(typeof(ValidArgAttribute), false))
                {
                    var validArg = argDef.GetCustomAttributes(typeof(ValidArgAttribute), false)[0] as ValidArgAttribute;
                    if (validArg?.Required == true && args[argDef.ParameterName] == null)
                    {
                        stringBuilder.AppendLine(validArg.Msg);
                    }
                }
                if (argDef.ParameterType.IsPrimitive && args[argDef.ParameterName] == null)
                {
                    stringBuilder.AppendLine($"{argDef.ParameterName}不能为空");
                }
            }

            if (stringBuilder.Length > 0)
            {
                throw CodeMsg.InvalidArg().FillArgs(stringBuilder.ToString()).BuildError();
            }

            base.OnActionExecuting(filterContext);
        }
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var stringBuilder = new StringBuilder();
            var modelState    = actionContext.ModelState;

            if (!modelState.IsValid)
            {
                foreach (var item in modelState.Values)
                {
                    foreach (var error in item.Errors)
                    {
                        stringBuilder.AppendLine(error.ErrorMessage);
                    }
                }
                throw CodeMsg.InvalidArg().FillArgs(stringBuilder.ToString()).BuildError();
            }

            var actionDescriptor     = actionContext.ActionDescriptor;
            var controllerDescriptor = actionDescriptor.ControllerDescriptor;
            var args       = actionContext.ActionArguments;
            var argDefInfo = actionDescriptor.GetParameters();

            foreach (var argDef in argDefInfo)
            {
                var validArg = argDef.GetCustomAttributes <ValidArgAttribute>().FirstOrDefault();
                if (validArg != null)
                {
                    if (validArg.Required && args[argDef.ParameterName] == null)
                    {
                        stringBuilder.AppendLine(validArg.Msg);
                    }
                }
                else if (argDef.ParameterType.IsPrimitive && args[argDef.ParameterName] == null)
                {
                    stringBuilder.AppendLine($"{argDef.ParameterName}不能为空");
                }
            }

            if (stringBuilder.Length > 0)
            {
                throw CodeMsg.InvalidArg().FillArgs(stringBuilder.ToString()).BuildError();
            }
            base.OnActionExecuting(actionContext);
        }
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            base.OnAuthorization(actionContext);
            var actionDescriptor     = actionContext.ActionDescriptor;
            var controllerDescriptor = actionDescriptor.ControllerDescriptor;

            //是否允许匿名访问
            if (controllerDescriptor.GetCustomAttributes <AllowAnonymousAttribute>().Any() ||
                actionDescriptor.GetCustomAttributes <AllowAnonymousAttribute>().Any())
            {
                return;
            }

            var token = GetToken(actionContext);

            if (TokenVerifier.Verify(token) == null)
            {
                throw CodeMsg.InvalidToken().BuildError();
            }
        }
Exemple #8
0
 public static Error Build(CodeMsg codeMsg)
 {
     return(new Error(codeMsg));
 }
Exemple #9
0
 private Error(CodeMsg codeMsg)
 {
     CodeMsg = codeMsg;
 }