/// <summary>
        /// 创建返回信息
        /// </summary>
        /// <param name="response"></param>
        /// <returns></returns>
        private HttpResponseMessage MakeResponse(BaseDtoResp response)
        {
            HttpResponseMessage Response = new HttpResponseMessage()
            {
                Content    = new StringContent(JsonConvert.SerializeObject(response), System.Text.Encoding.GetEncoding("UTF-8"), "application/json"),
                StatusCode = HttpStatusCode.Unauthorized
            };

            return(Response);
        }
        /// <summary>
        /// 授权认证
        /// </summary>
        /// <param name="actionContext"></param>
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            BaseDtoResp resp = new BaseDtoResp();
            //如果用户方位的Action带有AllowAnonymousAttribute,则不进行授权验证   IsValidation=false也不进行验证

            var result  = actionContext.ActionDescriptor.GetCustomAttributes <BaseAuthorizeAttribute>().Any(p => p.IsValidation == false);
            var result2 = actionContext.ActionDescriptor.GetCustomAttributes <BaseAuthorizeAttribute>().Any(p => p.IsValidation == true);

            //如果有AllowAnonymousAttribute不进行权限验证
            if (actionContext.ActionDescriptor.GetCustomAttributes <AllowAnonymousAttribute>().Any())
            {
                return;
            }

            //如果有IsValidation == false不进行权限验证
            if (actionContext.ActionDescriptor.GetCustomAttributes <BaseAuthorizeAttribute>().Any(p => p.IsValidation == false))
            {
                return;
            }

            //域名认证
            resp = AuthorizeDoMain(actionContext.Request);
            if (!resp.IsSuccess)
            {
                actionContext.Response = MakeResponse(resp);
            }

            //IP认证
            resp = AuthorizeIP();
            if (!resp.IsSuccess)
            {
                actionContext.Response = MakeResponse(resp);
            }

            //Token认证
            resp = AuthorizeToken(actionContext.Request);
            if (!resp.IsSuccess)
            {
                actionContext.Response = MakeResponse(resp);
            }

            #region
            //var verifyResult = actionContext.Request.Headers.Authorization != null &&  //要求请求中需要带有Authorization头
            //                   actionContext.Request.Headers.Authorization.Parameter == "123456"; //并且Authorization参数为123456则验证通过

            //if (!verifyResult)
            //{
            //    //如果验证不通过,则返回401错误,并且Body中写入错误原因
            //    //actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new HttpError("Token 不正确"));
            //}
            #endregion
        }
        /// <summary>
        /// 创建返回信息
        /// </summary>
        /// <param name="Msg"></param>
        /// <returns></returns>
        private HttpResponseMessage MakeResponse(string Msg)
        {
            BaseDtoResp response = new BaseDtoResp()
            {
                Msg = Msg
            };
            HttpResponseMessage Response = new HttpResponseMessage(HttpStatusCode.Accepted)
            {
                Content = new StringContent(JsonConvert.SerializeObject(response), System.Text.Encoding.GetEncoding("UTF-8"), "application/json")//, "application/json"
            };

            return(Response);
        }
Exemple #4
0
 public static BaseDtoResp <T> ExecuteObjects <T>(string SQLString)
 {
     using (MySqlConnection conn = new MySqlConnection(GetConnectionString()))
         using (MySqlCommand cmd = conn.CreateCommand())
         {
             conn.Open();
             cmd.CommandText = SQLString;
             BaseDtoResp <T> resp = new BaseDtoResp <T>();
             resp.Msg  = conn.ConnectionString;
             resp.Data = AutoMapper.Mapper.DynamicMap <T>(cmd.ExecuteReader());
             return(resp);
         }
 }
Exemple #5
0
        public ActionResult BuyProduct(BuyProductDto dto)
        {
            var data = RedisCacheHelper.Get <List <ProductDto> >("productlist");

            ViewData["ServerIP"] = $"服务器IP={IPHepler.GetLocalIP()}";
            var count = RedisCacheHelper.Decrement(dto.ProductID.ToString(), dto.BuyCount);
            BaseDtoResp <string> resp = new BaseDtoResp <string>();

            if (count >= 0)
            {
                resp.IsSuccess = MysqlHelper.ExecuteSql($"update Product set count=count-{dto.BuyCount} where ID={dto.ProductID}") > 0;
                resp.Msg       = "商品购买成功";
            }
            else
            {
                resp.Msg = "商品已卖完";
            }


            //RedisCacheHelper.Add<Student>(stu.NO, stu, DateTime.Now.AddMinutes(15));
            return(Json(resp));
        }