Exemplo n.º 1
0
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            bool isCorsRequest      = request.Headers.Contains(Origin);
            bool isPreflightRequest = request.Method == HttpMethod.Options;


            var logInfo2 = new JLogInfo
            {
                LogType = JLogType.Info.ToString(),
                Message = "获取请求:isPreflightRequest:" + isPreflightRequest.ToString()
                          + ";isCorsRequest:" + isCorsRequest.ToString() + ""
                          + ";request.Method:" + request.Method.ToString() + "",
                ActionName = "SendAsync",
                ModuleName = "CorsHandler"
            };

            LogHelper.Write(logInfo2);

            if (isCorsRequest)
            {
                if (isPreflightRequest)
                {
                    return(Task.Factory.StartNew <HttpResponseMessage>(() =>
                    {
                        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
                        response.Headers.Add(AccessControlAllowOrigin, request.Headers.GetValues(Origin).First());

                        string accessControlRequestMethod = request.Headers.GetValues(AccessControlRequestMethod).FirstOrDefault();
                        if (accessControlRequestMethod != null)
                        {
                            response.Headers.Add(AccessControlAllowMethods, accessControlRequestMethod);
                        }

                        string requestedHeaders = string.Join(", ", request.Headers.GetValues(AccessControlRequestHeaders));
                        if (!string.IsNullOrEmpty(requestedHeaders))
                        {
                            response.Headers.Add(AccessControlAllowHeaders, requestedHeaders);
                        }

                        return response;
                    }, cancellationToken));
                }
                else
                {
                    return(base.SendAsync(request, cancellationToken).ContinueWith <HttpResponseMessage>(t =>
                    {
                        HttpResponseMessage resp = t.Result;
                        resp.Headers.Add(AccessControlAllowOrigin, request.Headers.GetValues(Origin).First());
                        return resp;
                    }));
                }
            }
            else
            {
                return(base.SendAsync(request, cancellationToken));
            }
        }
Exemplo n.º 2
0
        public void Write(JLogInfo logInfo, JLogType logType, Exception ex)
        {
            Level        level        = ConvertToLevel(logType);
            LoggingEvent loggingEvent = new LoggingEvent(ThisDeclaringType, Logger.Repository,
                                                         Logger.Name, level, logInfo.Message, ex);

            if (ex != null)
            {
                logInfo.Message = ex.Message + ex.StackTrace;
            }

            foreach (var property in logInfo.GetType().GetProperties())
            {
                loggingEvent.Properties[property.Name] = property.GetValue(logInfo, null);
            }
            Logger.Log(loggingEvent);
        }
Exemplo n.º 3
0
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="context"></param>
 public EFAuditDataService(DbContext context)
 {
     _context = context;
     if (LogInfo == null)
     {
         LogInfo = new JLogInfo();
     }
     OnLog = sql =>
     {
         var lvl = LogInfo.LogType;
         LogInfo.LogType = JLogType.Debug.ToString();
         LogInfo.Message = sql;
         LogInfo.OpTime  = DateTime.Now;
         LogHelper.Write(LogInfo);
         LogInfo.LogType = lvl;
     };
 }
Exemplo n.º 4
0
 /// <summary>
 /// 根据DBHelper创建一个
 /// </summary>
 /// <param name="helper"></param>
 public AdoAuditDataService(DBHelper helper)
 {
     DBHelper = helper;
     if (LogInfo == null)
     {
         LogInfo = new JLogInfo();
     }
     OnLog = sql =>
     {
         var lvl = LogInfo.LogType;
         LogInfo.LogType = JLogType.Debug.ToString();
         LogInfo.Message = sql;
         LogInfo.OpTime  = DateTime.Now;
         LogHelper.Write(LogInfo);
         LogInfo.LogType = lvl;
     };
 }
Exemplo n.º 5
0
        /// <summary>
        /// 应用程序启动事件方法
        /// </summary>
        protected virtual void Application_Start()
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            //DependencyResolver.SetResolver(new NinjectDependencyResolver(AddBindings));
            var logInfo = new JLogInfo
            {
                LogType    = JLogType.Info.ToString(),
                Message    = "Application_Start",
                ActionName = "Application_Start",
                ModuleName = "MvcApplication"
            };

            GetAllAssemblys();

            ResHelper.CombinAssemblyResx(Assemblys);
            AddBindings(SiteManager.Kernel);

            AppManager.Instance.UserProvider  = SiteManager.Kernel.Get <IDataProvider <AppUser> >();
            AppManager.Instance.RoleProvider  = SiteManager.Kernel.Get <IDataProvider <AppRole> >();
            AppManager.Instance.StateProvider = SiteManager.Kernel.Get <IStateProvider>();
            SiteManager.Init();

            SiteManager.Get <UserConfigStorage <UserConfig> >();
            var resFileWriter = new ResFileWriter();

            resFileWriter.WriteResFiles();
            sw.Stop();
            logInfo.Costs = sw.ElapsedMilliseconds;

            LogHelper.Write(logInfo);
            //初始化日程表的基础数据栏目
            SiteManager.Catalog.InitStaticCatalogs(typeof(ScheduleEvent));
            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            SiteManager.Catalog.InitStaticCatalogs(typeof(MessageRoot));
            //开启数据库更新
            //if (!DbSchemaVersionManager.GetInstance.ValidateVersion())
            //{
            //    DbSchemaVersionManager.GetInstance.UpdateDbSchemaToMaxVersion();
            //}
        }
Exemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="actionContext"></param>
        public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            //获取请求的控制器完整命名
            string controllerFullName = actionContext.ActionDescriptor.ControllerDescriptor.ControllerType.FullName;
            //获取请求名称
            string actionName = actionContext.ActionDescriptor.ActionName;

            var logInfo2 = new JLogInfo
            {
                LogType    = JLogType.Info.ToString(),
                Message    = "获取请求:控制器名称:" + controllerFullName + ";请求名称:" + actionName + "",
                ActionName = controllerFullName,
                ModuleName = actionName
            };

            LogHelper.Write(logInfo2);

            #region 获取服务的自定义属性(如果自定义数据忽略该请求的验证直接通过
            Collection <ApiAuthAttribute> anonymousAction = actionContext.ActionDescriptor.GetCustomAttributes <ApiAuthAttribute>();
            if (anonymousAction.Any())
            {
                if (anonymousAction[0].IsIgnoreAuth)
                {
                    return;
                }
            }
            #endregion

            //获取正在请求的服务对象信息
            List <ServiceInfo> serviceList = ApiManager.mServiceInfoManager.GetServiceInfo(actionName, controllerFullName);
            if (!serviceList.Any())
            {
                //如果未授权返回错误提示信息
                HandleUnauthorizedRequest(actionContext);
                return;
            }
            ServiceInfo serviceInfo = serviceList[0];

            #region 根据服务提供的授权方式与对应客户id的授权方式进行判断该请求是否允许访问

            /*
             * 根据所访问的服务对象来确定该服务采用的何种验证方式
             * 0 有权限的客户组(NeedAuth)  :必须通过安全验证,与客户组id授权验证
             * 1 所有授权客户端(AllUsers)  :只需要通过安全验证
             * 2 所有人(EveryOne)          :不需要验证直接访问
             * 4 禁止所有人(Forbidden)     :不允许任何访问
             */
            switch (serviceInfo.AuthWay)
            {
            case "0":
                if (!this.IsAuthenticated)
                {
                    //如果未授权返回错误提示信息
                    HandleUnauthorizedRequest(actionContext);
                }
                bool isService = ApiManager.mServerAuthManager.GetAuthService(System.Web.HttpContext.Current.User.Identity.Name, actionName, controllerFullName);
                if (!isService)
                {
                    //如果未授权返回错误提示信息
                    HandleUnauthorizedRequest(actionContext);
                }
                break;

            case "1":
                if (!this.IsAuthenticated)
                {
                    //如果未授权返回错误提示信息
                    HandleUnauthorizedRequest(actionContext);
                }
                break;

            case "2":
                break;

            case "4":
                HandleUnauthorizedRequest(actionContext);
                return;

            default:
                HandleUnauthorizedRequest(actionContext);
                return;
            }

            #endregion
        }