Example #1
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            _IsAuthorization = context.Filters.HasFilter(typeof(AllowAnonymousFilter));
            if (!_IsAuthorization)
            {
                var uid       = context.HttpContext.Request.Headers.Authorization();
                var accountID = uid.ToGuid();
                var account   = Db.Account.AsNoTracking().FirstOrDefault(a => a.AccountId == accountID && a.DataState == 0);
                if (account == null)
                {
                    context.Result = JsonResultFormat.ResponseFail(14002, "Authorization failure.");
                    return;
                }

                if (account.LoginFailCount == 10)
                {
                    context.Result = JsonResultFormat.ResponseFail(14003, "The account has been locked.");
                    return;
                }

                _ValidTime    = context.HttpContext.Request.Headers["ValidTime"].ToString().ToInt64();
                BaseAccountID = account.AccountId;
                BaseAccount   = account;
            }
            base.OnActionExecuting(context);
        }
Example #2
0
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            if (!context.Filters.HasFilter(typeof(AllowAnonymousFilter)))
            {
                var result        = JsonResultFormat.ResponseFail(-14001, "Invalid token.");
                var authorization = context.HttpContext.Request.Headers.Authorization();
                if (authorization.IsNullOrEmpty())
                {
                    context.Result = result;
                    return;
                }

                var authorizationJson = authorization.ToAesDecrypt(AppSettings.AesKey, AppSettings.AesIv);
                if (authorizationJson.IsNullOrEmpty())
                {
                    context.Result = result;
                    return;
                }

                var token = new Serialization().DeserializeJsonToEntity <AuthorizationToken>(authorizationJson);
                if (token == null)
                {
                    context.Result = result;
                    return;
                }

                if (token.AccountGuid == null || token.AccountGuid == Guid.Empty)
                {
                    context.Result = result;
                    return;
                }

                if (token.ValidTime < DateTime.Now.ToUnixTime())
                {
                    context.Result = result;
                    return;
                }

                if (token.IpAddress != context.HttpContext.Connection.RemoteIpAddress.ToString())
                {
                    context.Result = result;
                    return;
                }

                if (token.UserAgent != context.HttpContext.Request.Headers.UserAgent())
                {
                    context.Result = result;
                    return;
                }

                context.HttpContext.Request.Headers.Add("ValidTime", token.ValidTime.ToString());
                context.HttpContext.Request.Headers["authorization"] = token.AccountGuid.ToString();
            }
        }
Example #3
0
        public void OnException(ExceptionContext context)
        {
            if (context.Exception != null)
            {
                var exception = context.Exception.GetInnerException();
                AsyncLogger.LogException(exception, context.HttpContext.Request);

                var errorCode = exception.HResult;
                if (errorCode == 0)
                {
                    errorCode = 500;
                }
                context.Result           = JsonResultFormat.ResponseFail(errorCode, "Server exception.");
                context.ExceptionHandled = true;
            }
        }
Example #4
0
 public override void OnActionExecuting(ActionExecutingContext context)
 {
     if (context.ModelState.IsValid == false)
     {
         var message     = string.Empty;
         var modelErrors = context.ModelState.Values.Select(x => x.Errors);
         foreach (var item in modelErrors)
         {
             foreach (var subItem in item)
             {
                 message = subItem.ErrorMessage;
             }
         }
         context.Result = JsonResultFormat.ResponseFail(-1, message);
     }
     base.OnActionExecuting(context);
 }
Example #5
0
 /// <summary>
 /// Json通用网格返回格式:返回成功
 /// </summary>
 /// <returns>
 /// Json格式 : {code:0,rows:data,total:1,message:Success}
 /// </returns>
 protected virtual JsonResult ResponseGridResult() => JsonResultFormat.ResponseGridResult();
Example #6
0
 /// <summary>
 /// Json通用返回格式:返回失败
 /// </summary>
 /// <param name="code">错误代码</param>
 /// <param name="message">错误信息(默认为"Unknown error")</param>
 /// <returns>
 /// Json格式 : {code:-1,data:"",count:-1,message:Unknown error}
 /// </returns>
 protected virtual JsonResult ResponseFail(int code = -1, string message = "Unknown error") => JsonResultFormat.ResponseFail(code, message);
Example #7
0
 /// <summary>
 /// Json通用返回格式:返回失败
 /// </summary>
 /// <param name="message">错误信息(默认为"Unknown error")</param>
 /// <returns>
 /// Json格式 : {code:-1,data:"",count:-1,message:Unknown error}
 /// </returns>
 protected virtual JsonResult ResponseFail(string message = "Unknown error") => JsonResultFormat.ResponseFail(message);
Example #8
0
 /// <summary>
 /// Json通用返回格式:返回成功
 /// </summary>
 /// <param name="dataTable"><see cref="DataTable"/></param>
 /// <param name="count">数据量(默认为 <see cref="DataTable.Rows"/> 的Count)</param>
 /// <returns>
 /// Json格式 : {code:0,data:DataTable,count:DataTable.Rows.Count,message:Success}
 /// </returns>
 protected virtual JsonResult ResponseSuccess(DataTable dataTable, int count = 0) => JsonResultFormat.ResponseSuccess(dataTable, count);
Example #9
0
 /// <summary>
 /// Json通用返回格式:返回成功
 /// </summary>
 /// <param name="list"><see cref="List{T}"/></param>
 /// <param name="count">数据量(默认为 <see cref="List{T}.Count"/>)</param>
 /// <returns>
 /// Json格式 : {code:0,data:List,count:List.Count(),message:Success}
 /// </returns>
 protected virtual JsonResult ResponseSuccess <T>(List <T> list, int count = 0) => JsonResultFormat.ResponseSuccess(list, count);
Example #10
0
 /// <summary>
 /// Json通用返回格式:返回成功
 /// </summary>
 /// <param name="data">要返回的数据</param>
 /// <param name="count">返回的数据行数(默认为1,数据为null则为0)</param>
 /// <returns>
 /// Json格式 : {code:0,data:data,count:1,message:Success}
 /// </returns>
 protected virtual JsonResult ResponseSuccess <T>(T data, int count = 1) => JsonResultFormat.ResponseSuccess(data, count);
Example #11
0
 /// <summary>
 /// Json通用返回格式:返回成功
 /// </summary>
 /// <returns>
 /// Json格式 : {code:0,data:"",count:0,message:Success}
 /// </returns>
 protected virtual JsonResult ResponseSuccess() => JsonResultFormat.ResponseSuccess();
Example #12
0
 /// <summary>
 /// Json通用网格返回格式:返回成功
 /// </summary>
 /// <param name="dataTable"><see cref="DataTable"/></param>
 /// <param name="count">数据量(默认为 <see cref="DataTable.Rows"/> 的Count)</param>
 /// <returns>
 /// Json格式 : {code:0,rows:DataTable,total:DataTable.Rows.Count,message:Success}
 /// </returns>
 protected virtual JsonResult ResponseGridResult(DataTable dataTable, int count = 0) => JsonResultFormat.ResponseGridResult(dataTable, count);
Example #13
0
 /// <summary>
 /// Json通用网格返回格式:返回成功
 /// </summary>
 /// <param name="list"><see cref="List{T}"/></param>
 /// <param name="count">数据量(默认为 <see cref="List{T}.Count"/>)</param>
 /// <returns>
 /// Json格式 : {code:0,rows:List,total:List.Count(),message:Success}
 /// </returns>
 protected virtual JsonResult ResponseGridResult <T>(List <T> list, int count = 0) => JsonResultFormat.ResponseGridResult(list, count);
Example #14
0
 /// <summary>
 /// Json通用网格返回格式:返回成功
 /// </summary>
 /// <param name="data">数据</param>
 /// <param name="count">数据量(默认为1,数据为null则为0)</param>
 /// <returns>
 /// Json格式 : {code:0,rows:data,total:1,message:Success}
 /// </returns>
 protected virtual JsonResult ResponseGridResult <T>(T data, int count = 1) => JsonResultFormat.ResponseGridResult(data, count);