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); }
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); }
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 }
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() }); }
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 }
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); // } //} }