Example #1
0
        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            MonitorLog MonLog = filterContext.Controller.ViewData[Key] as MonitorLog;

            MonLog.ExecuteEndTime = DateTime.Now;
            log.Info(MonLog.GetLoginfo(MonitorLog.MonitorType.View));
            filterContext.Controller.ViewData.Remove(Key);
        }
Example #2
0
        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            MonitorLog MonLog = filterContext.Controller.ViewData[Key] as MonitorLog;

            MonLog.ExecuteEndTime = DateTime.Now;
            LogHelper.Monitor(MonLog.GetLoginfo(MonitorLog.MonitorType.View));
            _log.AddLog(LogType.Operate, MonLog.ControllerName, "", MonLog.ActionName, HandleType.Leave);
            filterContext.Controller.ViewData.Remove(Key);
        }
Example #3
0
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            MonitorLog MonLog = filterContext.Controller.ViewData[Key] as MonitorLog;

            MonLog.ExecuteEndTime   = DateTime.Now;
            MonLog.FormCollections  = filterContext.HttpContext.Request.Form;        //form表单提交的数据
            MonLog.QueryCollections = filterContext.HttpContext.Request.QueryString; //Url 参数
            LogHelper.Monitor(MonLog.GetLoginfo());
        }
        public void OnActionExecuting(ActionExecutingContext context)
        {
            #region 记录日志(所有的请求)
            MonitorLog MonLog = new MonitorLog();
            MonLog.ExecuteStartTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.ffff", DateTimeFormatInfo.InvariantInfo));
            MonLog.ControllerName   = context.RouteData.Values["controller"] as string;
            MonLog.ActionName       = context.RouteData.Values["action"] as string;
            MonLog.QueryCollections = context.HttpContext.Request.QueryString;//Url 参数
            if (string.IsNullOrEmpty(MonLog.QueryCollections.ToString()) && context.ActionArguments.Count != 0)
            {
                try
                {
                    MonLog.BodyCollections = JsonConvert.SerializeObject(context.ActionArguments["dic"]);
                }
                catch
                {
                }
            }
            logger.LogInformation(MonLog.GetLoginfo());
            #endregion

            #region 根据注解允许匿名访问
            return;

            var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
            //controller
            var controllerAttributes = actionDescriptor.MethodInfo.DeclaringType.GetCustomAttributes(typeof(AlwaysAccessibleAttribute), true);
            if (controllerAttributes != null && controllerAttributes.Length > 0)
            {
                return;
            }
            //action
            var actionAttributes = actionDescriptor.MethodInfo.GetCustomAttributes(typeof(AlwaysAccessibleAttribute), true);
            if (actionAttributes != null && actionAttributes.Length > 0)
            {
                return;
            }
            #endregion

            #region 权限验证
            //1.忽略权限验证的部分(如果要忽略的部分过多,可以提取成方法)
            if (_Token.PassToken(MonLog.ControllerName, MonLog.ActionName))
            {
                return;
            }
            //2.根据token获取用户实体对象
            //3.用户->职位->角色->是否具备操作权限

            var  token = context.HttpContext.Request.Headers["token"].ToString();
            Json json  = _Token.CheckToken(token);
            if (json.status != 0)
            {
                context.Result = new JsonResult(json);
                return;
            }
            #endregion
        }
Example #5
0
 private static object GetMonitor(MonitorLog monLog, int applicationType)
 {
     return(new
     {
         Controller = monLog.ControllerName,
         Action = monLog.ActionName,
         StartTime = monLog.ExecuteStartTime,
         EndTime = monLog.ExecuteEndTime,
         SumTime = (monLog.ExecuteEndTime - monLog.ExecuteStartTime).TotalSeconds,
         IP = monLog.IP,
         HttpMethod = monLog.HttpMethod,
         Head = monLog.HttpRequestHeaders,
         RequestMessage = monLog.ActionParams,
         ResponseMessage = monLog.ResponseData,
         ApplicationType = applicationType,
         Description = monLog.GetLoginfo()
     });
 }
Example #6
0
        public void OnActionExecuting(ActionExecutingContext context)
        {
            #region 记录日志(所有的请求)
            MonitorLog MonLog = new MonitorLog();
            MonLog.ExecuteStartTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.ffff", DateTimeFormatInfo.InvariantInfo));
            MonLog.ControllerName   = context.RouteData.Values["controller"] as string;
            MonLog.ActionName       = context.RouteData.Values["action"] as string;
            MonLog.QueryCollections = context.HttpContext.Request.QueryString;//Url 参数
            if (string.IsNullOrEmpty(MonLog.QueryCollections.ToString()) && context.ActionArguments.Count != 0)
            {
                try
                {
                    MonLog.BodyCollections = JsonConvert.SerializeObject(context.ActionArguments["dic"]);
                }
                catch
                {
                }
            }
            logger.LogInformation(MonLog.GetLoginfo());
            #endregion
            #region 权限验证
            //1.忽略权限验证的部分(如果要忽略的部分过多,可以提取成方法)
            if (MonLog.ControllerName.ToLower() == "user" && MonLog.ActionName.ToLower() == "gettoken")
            {
                return;
            }
            //2.根据token获取用户实体对象
            //3.用户->职位->角色->是否具备操作权限

            var  token = context.HttpContext.Request.Headers["token"].ToString();
            Json json  = CheckToken(token);
            if (json.status != 0)
            {
                context.Result = new JsonResult(json);
                return;
            }
            #endregion
        }
Example #7
0
        public async Task Invoke(HttpContext context)
        {
            MonitorLog monitorLog = new MonitorLog();

            try
            {
                HttpRequest request = context.Request;
                monitorLog.ExecuteStartTime = DateTime.Now;
                monitorLog.HttpMethod       = request.Method;
                monitorLog.ActionParams     = await ReadBodyAsync(context.Request);

                monitorLog.HttpRequestHeaders = JsonConvert.SerializeObject(request.Headers);
                monitorLog.IP = GetUserIp(context);

                await _next(context);

                monitorLog.ExecuteEndTime = DateTime.Now;
                monitorLog.ResponseData   = await ReadBodyAsync(context.Response);

                _logger.LogInformation(monitorLog.GetLoginfo());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, monitorLog.GetErrorInfo());
                var statusCode = context.Response.StatusCode;
                if (ex is UserFriendlyException)
                {
                    statusCode = 400;
                }
                else if (ex is AncAuthorizationException)
                {
                    statusCode = 401;
                }
                else if (ex is AncAuthenticationException)
                {
                    statusCode = 403;
                }
                await HandleExceptionAsync(context, statusCode, ex.Message);
            }
            //finally
            //{
            //    var statusCode = context.Response.StatusCode;
            //    var msg = "";
            //    switch (statusCode)
            //    {
            //        case 500:
            //            msg = "服务器系统内部错误";
            //            break;

            //        case 401:
            //            msg = "未登录";
            //            break;

            //        case 403:
            //            msg = "无权限执行此操作";
            //            break;

            //        case 408:
            //            msg = "请求超时";
            //            break;
            //    }
            //    if (!string.IsNullOrWhiteSpace(msg))
            //    {
            //        await HandleExceptionAsync(context, statusCode, msg);
            //    }
            //}
        }