/// <summary> /// /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task InvokeAsync(HttpContext context) { if (options.RequestConstrainAsync != null) { if (!await options.RequestConstrainAsync(context)) { return; } } var request = context.Request; var contents = ExploreHelper.GetContents(options); if (options.ReturnAbsolutePath) { var port = request.Url.IsDefaultPort ? null : $":{request.Url.Port}"; var pathPrefix = $"{request.Url.Scheme}://{request.Url.Host}{port}/"; foreach (var item in contents) { fixPath(item, pathPrefix); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="next"></param> /// <returns></returns> public async Task InvokeAsync(HttpContext context, RequestDelegate next) { var options = this.options.Value; if (options.RequestConstrainAsync != null) { if (!await options.RequestConstrainAsync(context)) { return; } } var request = context.Request; var contents = ExploreHelper.GetContents(options); if (options.ReturnAbsolutePath) { var pathPrefix = $"{request.Scheme}://{request.Host}/"; foreach (var item in contents) { fixPath(item, pathPrefix); }
public ResponseResult <CurrentUserModel> SignIn(LoginModel model) { try { if (ApiCacheDic.Get(ApiCacheDic.RedirectUri) == null) { var u = Request.RequestUri.GetLeftPart(UriPartial.Authority); ApiCacheDic.Add(ApiCacheDic.RedirectUri, u, DateTime.Now.AddYears(1)); } LogHelper.WriteInfoLog("SignIn...."); #region 参数验证 if (string.IsNullOrEmpty(model.LoginName)) { return(ResponseResult <CurrentUserModel> .GenFaildResponse(ResultCode.UsernameIsNull)); } if (string.IsNullOrEmpty(model.Password)) { return(ResponseResult <CurrentUserModel> .GenFaildResponse(ResultCode.PasswordIsNull)); } #endregion HttpRequestBase request = Context.Request; ExploreHelper eh = new ExploreHelper(request); SysLoginLog logEntity = new SysLoginLog { ClientIpAddress = eh.ClientIP, ClientName = eh.ClientMachineName, Enabled = 1, LogDate = DateTime.Now }; //登录日志 try { logEntity.IPNum = (int)StringHelper.IPToInt(eh.ClientIP); } catch { logEntity.IPNum = 0; } ResultCode code = ResultCode.Success; var service = GetService <SysUserService>(); var data = service.Login(model.LoginName, model.Password); if (data != null) { var token = new SysLoginTokenModel(data.UserDepId, data.Id) { UserId = data.Id }; var services = GetService <SysLoginTokenService>(); services.Add(new SysLoginToken() { UserId = data.Id, CustomerUser = data.UserType, CustomerId = data.UserCustomerId, Token = token.Token, InDate = token.InDate, ExpriedTime = token.ExpriedTime, AccessChannelId = 0, }); var currentUserModel = new CurrentUserModel { LoginName = model.LoginName, UserId = data.Id, UserIsFreeze = data.UserIsFreeze ? 0 : 1, UserIsManage = data.UserIsManage, UserName = data.UserName, UserPosition = data.UserPosition, UserCustomerId = data.UserCustomerId, Token = token.Token }; logEntity.UserId = currentUserModel.UserId; logEntity.Token = token.Token; logEntity.UserName = currentUserModel.UserName; logEntity.LogDate = System.DateTime.Now; if (data.DelState == 1 || data.DepDelState == 1 || data.CompanyDelState == 1) { code = ResultCode.UserDeleted; logEntity.IsSucceed = 0; logEntity.LogReason = "用户已被删除"; WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志 } else if (data.Enabled == 0) { logEntity.IsSucceed = 0; logEntity.LogReason = "用户已被冻结"; WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志 } else { SignInByIdentity(data, token); code = ResultCode.Success; WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志 } return(ResponseResult <CurrentUserModel> .GenSuccessResponse(currentUserModel)); } else { code = ResultCode.UserWrongPassword; logEntity.InUserType = 1; logEntity.IsSucceed = 0; logEntity.LogReason = "用户不存在或者密码错误"; WriteLoginLog.WriteLogLogin(logEntity);//写入登录日志 return(ResponseResult <CurrentUserModel> .GenFaildResponse(code)); } } catch (Exception ex) { LogHelper.WriteErrorLog(HttpContext.Current.Request.RawUrl, ex); return(ResponseResult <CurrentUserModel> .GenSuccessResponse(ex.Message)); } }
/// <summary> /// 在请求执行完后 记录请求的数据以及返回数据 /// </summary> /// <param name="actionExecutedContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public override Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken) { object beginTime = null; if (actionExecutedContext.Request.Properties.TryGetValue(key, out beginTime)) { var menuAction = actionExecutedContext.ActionContext.ActionDescriptor.GetCustomAttributes <MenuAttribute>().OfType <MenuAttribute>().FirstOrDefault(); var menuAction1 = actionExecutedContext.ActionContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes <MenuAttribute>().OfType <MenuAttribute>().FirstOrDefault(); HttpRequestBase request = CurrentHttpContext.Instance().Request; DateTime time = DateTime.FromBinary(Convert.ToInt64(beginTime)); //var accessChannelInfo = ConfigurationHelper.AccessChannelSetting; // load AccessChannel.xml SysOperationLog apiActionLog = new SysOperationLog(); //提取Identity var id = CurrentHttpContext.Instance().User.Identity as ClaimsIdentity; if (id != null) { int accessChannelId = 0; int.TryParse(id?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Actor)?.Value, out accessChannelId); var appType = id?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.System)?.Value; var token = id?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Authentication)?.Value; apiActionLog.SourceEquipment = appType; apiActionLog.Token = token; var data = id?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.UserData)?.Value; if (data != null) { var user = JsonConvert.DeserializeObject <SysUser>(data); if (user != null) { //获取用户token apiActionLog.UserId = user.Id; } } } else { apiActionLog.SourceEquipment = "未知"; //获取用户token apiActionLog.UserId = 0; } //获取action名称 apiActionLog.MethodAction = actionExecutedContext.ActionContext.ActionDescriptor.ActionName; //获取Controller 名称 apiActionLog.FunctionController = actionExecutedContext.ActionContext.ActionDescriptor.ControllerDescriptor.ControllerName; //获取action开始执行的时间 apiActionLog.ExecutionTime = time; //获取执行action的耗时 apiActionLog.ExecutionDuration = (DateTime.Now - time).Milliseconds; apiActionLog.Navigator = request.UserAgent; //获取访问的ip ExploreHelper eh = new ExploreHelper(request); apiActionLog.ClientIpAddress = eh.ClientIP; //客户端名称 apiActionLog.ClientName = eh.ClientMachineName; //Url来源 apiActionLog.UrlReferrer = request.UrlReferrer != null ? request.UrlReferrer.AbsoluteUri : ""; //浏览器信息 apiActionLog.BrowserInfo = request.Browser.Browser + " - " + request.Browser.Version + " - " + request.Browser.Type; //获取request提交的参数 apiActionLog.Parameters = GetRequestValues(actionExecutedContext) + " " + GetRequestActionValues(actionExecutedContext); //获取response响应的结果 //apiActionLog.Exception = GetResponseValues(actionExecutedContext); // "",JsonConvert.SerializeObject(actionExecutedContext.Response.RequestMessage); try { apiActionLog.IPNum = (int)StringHelper.IPToInt(eh.ClientIP); } catch { apiActionLog.IPNum = 0; } apiActionLog.Description = msg; apiActionLog.RequestUri = request.Url.AbsoluteUri; apiActionLog.Enabled = 1; WriteLogService.WriteLogOperate(apiActionLog); } return(base.OnActionExecutedAsync(actionExecutedContext, cancellationToken)); }