Esempio n. 1
0
        protected void Application_Start()
        {
            DbContextSqlServer.SetDefaultConnectionString(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
            LogHelper.CreateRepository(Server.MapPath("/Log4Net/log4net.config"));
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles); //不需要
            //注册自定义视图
            ViewEngines.Engines.Clear();                     // 清除原MVC视图引擎规则
            ViewEngines.Engines.Add(new CustomViewEngine()); // 使用自定义视图引擎 /Sys/Base

            Tools.Log.WriteLog("应用程序已启动");
        }
Esempio n. 2
0
        public static void AdminConfigureServices(this IServiceCollection services, IConfiguration Configuration)
        {
            #region HttpContext
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            #endregion

            #region AppConfig
            //配置 AppConfigs
            AppConfig.AdminAppConfig = Configuration.GetSection("AppConfig").Get <AdminAppConfig>();
            #endregion

            #region DbFrame
            //注入链接字符串
            DbContextSqlServer.Register(AppConfig.AdminAppConfig.SqlServerConnStr, (tabs) =>
            {
                //注册Models
                Entitys.Class.EntitySet.Register(tabs);
            });
            //将DbContextSqlServer对象注册Logic层静态对象中
            Logic.Class.AppBase.db = new DbContextSqlServer();
            //将DbContextSqlServer对象注册UI层构造函数中
            //services.AddSingleton(Logic.Class.BaseLogic.db.GetType());
            #endregion

            #region JWT
            services.AddAuthentication(Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                {
                    ValidateIssuer           = true,                                                                                                                        //是否验证Issuer
                    ValidateAudience         = true,                                                                                                                        //是否验证Audience
                    ValidateLifetime         = true,                                                                                                                        //是否验证失效时间
                    ValidateIssuerSigningKey = true,                                                                                                                        //是否验证SecurityKey
                    ValidAudience            = AppConfig.AdminAppConfig.JwtKeyName,                                                                                         //Audience
                    ValidIssuer      = AppConfig.AdminAppConfig.JwtKeyName,                                                                                                 //Issuer,这两项和前面签发jwt的设置一致
                    IssuerSigningKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(AppConfig.AdminAppConfig.JwtSecurityKey)) //拿到SecurityKey
                };
            });
            #endregion

            #region Swagger 注册Swagger生成器,定义一个和多个Swagger 文档
            services.AddSwaggerGen(options =>
            {
                foreach (var item in _VersionList)
                {
                    options.SwaggerDoc(item, new OpenApiInfo {
                        Version = item
                    });
                }
                //为 Swagger JSON and UI设置xml文档注释路径
                var xmlPath = Path.Combine(System.AppContext.BaseDirectory, "App.xml");
                options.IncludeXmlComments(xmlPath, true);

                #region Jwt token 配置
                //option.OperationFilter<AppService.SwaggerParameterFilter>(); // 给每个接口配置授权码传入参数文本框
                //
                options.OperationFilter <AddResponseHeadersFilter>();
                options.OperationFilter <AppendAuthorizeToSummaryOperationFilter>();
                //很重要!这里配置安全校验,和之前的版本不一样
                options.OperationFilter <SecurityRequirementsOperationFilter>();
                //开启 oauth2 安全描述
                options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
                {
                    Description = "JWT授权(数据将在请求头中进行传输) 直接在下框中输入Bearer {token}(注意两者之间是一个空格)\"",
                    In          = ParameterLocation.Header,
                    Name        = "Authorization",
                    Type        = SecuritySchemeType.ApiKey,
                    //Scheme = "basic",
                });

                #endregion
            });
            #endregion
        }