Пример #1
0
        /// <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);
                }
Пример #2
0
        /// <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);
                }
Пример #3
0
        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));
            }
        }
Пример #4
0
        /// <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));
        }