Esempio n. 1
0
        /// <summary>
        /// 注册MVC服务
        /// </summary>
        /// <param name="services"></param>
        private void AddMvc(IServiceCollection services)
        {
            IMvcBuilder mvcBuilder = services.AddMvc();

            mvcBuilder.AddMvcOptions(options =>
            {
                options.Filters.AddService(typeof(HandlerExceptionFilter));
            });


            foreach (var module in ExtensionManager.Modules)
            {
                // Register controller from modules
                mvcBuilder.AddApplicationPart(module.Assembly);
            }

            mvcBuilder.AddRazorOptions(
                o =>
            {
                foreach (Assembly assembly in ExtensionManager.Assemblies)
                {
                    o.FileProviders.Add(new EmbeddedFileProvider(assembly, assembly.GetName().Name));
                }
                foreach (var module in ExtensionManager.Modules)
                {
                    o.AdditionalCompilationReferences.Add(MetadataReference.CreateFromFile(module.Assembly.Location));
                }
            }
                ).AddViewLocalization()
            .AddDataAnnotationsLocalization();

            foreach (Action <IMvcBuilder> prioritizedAddMvcAction in this.GetPrioritizedAddMvcActions())
            {
                this.logger.LogInformation("Executing prioritized AddMvc action '{0}' of {1}", this.GetActionMethodInfo(prioritizedAddMvcAction));
                prioritizedAddMvcAction(mvcBuilder);
            }
            //Csv
            var csvFormatterOptions = new CsvFormatterOptions();

            mvcBuilder.AddMvcOptions(options =>
            {
                options.InputFormatters.Add(new CsvInputFormatter(csvFormatterOptions));
                options.OutputFormatters.Add(new CsvOutputFormatter(csvFormatterOptions));
                options.FormatterMappings.SetMediaTypeMappingForFormat("csv", MediaTypeHeaderValue.Parse("text/csv"));

                options.RespectBrowserAcceptHeader = true;
                options.InputFormatters.Add(new XmlSerializerInputFormatter());
                options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
            });
            // Force Camel Case to JSON
            mvcBuilder.AddJsonOptions(opts =>
            {
                opts.SerializerSettings.ContractResolver     = new BaseContractResolver();
                opts.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                opts.SerializerSettings.NullValueHandling    = NullValueHandling.Ignore;
                opts.SerializerSettings.Converters.Add(new TimeSpanConverter());
                opts.SerializerSettings.Converters.Add(new GuidConverter());
                opts.SerializerSettings.Formatting = Formatting.None;
            });
            //注册模块FluentValidation验证
            foreach (ModuleInfo moduleInfo in ExtensionManager.Modules)
            {
                mvcBuilder.AddFluentValidation(fv => fv.RegisterValidatorsFromAssembly(moduleInfo.Assembly));
            }
        }
Esempio n. 2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var csvFormatterOptions = new CsvFormatterOptions();

            services.Configure <Settings>(Configuration);

            services.AddOptions();
            var appConfig = Configuration.GetSection("Settings").Get <Settings>();

            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            string connection = Configuration["ConnectionStrings:DefaultConnection"].ToString();

            services.AddDbContext <SmartContext>(opt => opt.UseSqlServer(connection));



            services.AddIdentity <ApplicationUser, IdentityRole>(options => {
                options.Cookies.ApplicationCookie.ExpireTimeSpan   = TimeSpan.FromHours(8);
                options.Cookies.ApplicationCookie.AccessDeniedPath = "/home/access-denied";
                options.SignIn.RequireConfirmedEmail = true;
            }).AddEntityFrameworkStores <SmartContext>().AddDefaultTokenProviders();



            services.AddScoped(typeof(IRepository <>), typeof(Repository <>));
            services.AddScoped(typeof(IServices <>), typeof(Services <>));
            services.AddScoped <IUser, User>();

            //services.AddScoped<IBusinessEntityService, BusinessEntityService>();
            //services.AddScoped<IUserSettingService, UserSettingService>();
            //services.AddScoped<IUserBusinessEntityService, UserBusinessEntityService>();

            services.AddLocalization(options =>
            {
                options.ResourcesPath = "Resources";
            });
            services.Configure <RequestLocalizationOptions>(options =>
            {
                var supportedCultures = new[]
                {
                    new CultureInfo("en-US"),
                    new CultureInfo("pt-BR")
                };
                options.DefaultRequestCulture = new RequestCulture(culture: "pt-BR", uiCulture: "pt-BR");
                options.SupportedCultures     = supportedCultures;
                options.SupportedUICultures   = supportedCultures;


                //options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async A => { return new ProviderCultureResult("en"); }));
            });


            services.AddMvc(options =>
            {
                // options.SslPort = 44368;
                // options.Filters.Add(new RequireHttpsAttribute());

                options.InputFormatters.Add(new CsvInputFormatter(csvFormatterOptions));
                options.OutputFormatters.Add(new CsvOutputFormatter(csvFormatterOptions));
                options.FormatterMappings.SetMediaTypeMappingForFormat("csv", MediaTypeHeaderValue.Parse("text/csv"));
            }).AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, opts => { opts.ResourcesPath = "Resources"; })
            .AddDataAnnotationsLocalization();
            services.AddAutoMapper();


            services.AddAuthorization(options =>
            {
                options.AddPolicy("CanManageTask", policy => policy.Requirements.Add(new ClaimRequirement("Task", "Write")));
            });

            services.AddDistributedMemoryCache(); // Adds a default in-memory implementation of IDistributedCache
            services.AddSession(options =>
            {
                // Set a short timeout for easy testing.
                options.IdleTimeout    = TimeSpan.FromHours(8);
                options.CookieHttpOnly = true;
            });



            //services.AddSingleton<ITempDataProvider, CookieTempDataProvider>();
            // Add application services.
            services.AddTransient <IEmailSender, AuthMessageSender>();
            services.AddTransient <ISmsSender, AuthMessageSender>();

            services.Configure <AuthMessageSenderOptions>(opt =>
            {
                opt.SendGridKey  = Configuration["AuthMessageSender:SendGridKey"].ToString();
                opt.SendGridUser = Configuration["AuthMessageSender:SendGridUser"].ToString();
            });
        }
Esempio n. 3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <FrotaAppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

            // jwt wire up
            services.AddSingleton <IJwtFactory, JwtFactory>();

            // Get options from app settings
            var jwtAppSettingOptions = Configuration.GetSection(nameof(JwtIssuerOptions));

            // Configure JwtIssuerOptions
            services.Configure <JwtIssuerOptions>(options =>
            {
                options.Issuer             = jwtAppSettingOptions[nameof(JwtIssuerOptions.Issuer)];
                options.Audience           = jwtAppSettingOptions[nameof(JwtIssuerOptions.Audience)];
                options.SigningCredentials = new SigningCredentials(_signingKey, SecurityAlgorithms.HmacSha256);
            });

            var tokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidIssuer    = jwtAppSettingOptions[nameof(JwtIssuerOptions.Issuer)],

                ValidateAudience = true,
                ValidAudience    = jwtAppSettingOptions[nameof(JwtIssuerOptions.Audience)],

                ValidateIssuerSigningKey = true,
                IssuerSigningKey         = _signingKey,

                RequireExpirationTime = false,
                ValidateLifetime      = false,
                ClockSkew             = TimeSpan.Zero
            };

            services.AddAuthentication().AddJwtBearer(options =>
            {
                options.SaveToken = true;
                options.TokenValidationParameters = tokenValidationParameters;
            });

            // api user claim policy
            services.AddAuthorization(options =>
            {
                options.AddPolicy("ApiUser", policy => policy.RequireClaim(Constants.Strings.JwtClaimIdentifiers.Rol, Constants.Strings.JwtClaims.ApiAccess));
            });

            services.AddIdentity <Login, IdentityRole>
                (o =>
            {
                // configure identity options
                o.Password.RequireDigit           = false;
                o.Password.RequireLowercase       = false;
                o.Password.RequireUppercase       = false;
                o.Password.RequireNonAlphanumeric = false;
                o.Password.RequiredLength         = 6;
            })
            .AddEntityFrameworkStores <FrotaAppDbContext>()
            .AddDefaultTokenProviders();

            var csvFormatterOptions = new CsvFormatterOptions();

            csvFormatterOptions.CsvDelimiter = "|";

            services.AddMvc(options =>
            {
                options.OutputFormatters.Add(new CsvOutputFormatter(csvFormatterOptions));
                options.FormatterMappings.SetMediaTypeMappingForFormat("csv", MediaTypeHeaderValue.Parse("text/csv"));
            }).AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining <Startup>());
            services.AddAutoMapper();
        }
Esempio n. 4
0
        public void ConfigureServices(IServiceCollection services)
        {
            // IoC para autoMapper
            services.AddAutoMapper();

            // Obtendo parametros AuthorizationConfigs do appsettings.json
            services.Configure <AuthorizationConfigs>(Configuration.GetSection("AuthorizationConfigs"));

            // Configuração da internacionalização
            services.AddJsonLocalization(options => options.ResourcesPath = "Internationalization");

            WRIoC.Register(services);

            services.AddSingleton <IConfiguration>(Configuration);

            services.AddScoped <IUsuarioBase, UsuarioBase>();

            services.AddDbContext <WRContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))
                                              .ConfigureWarnings(x => x.Ignore(RelationalEventId.AmbientTransactionWarning)));

            // Configurando ServiceLocator
            ServiceLocator.Init(services.BuildServiceProvider());

            // Configuração AddIdentityServer
            services.AddIdentityServer()
            .AddSigningCredential(AuthorizationConfig.GetCertificate())
            .AddInMemoryApiResources(AuthorizationConfig.GetApiResources())
            .AddInMemoryClients(AuthorizationConfig.GetClients())
            .AddResourceOwnerValidator <GrantValidator>();

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

            // Configuração Client
            services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
            .AddIdentityServerAuthentication(options => AuthorizationConfig.GetServerAutentication(options));


            CorsAuthorization.SetAllowAll(services);

            services.AddCors(options =>
            {
                options.AddPolicy("ALL", builder => builder
                                  .AllowAnyOrigin()
                                  .AllowAnyHeader()
                                  .AllowAnyMethod()
                                  .AllowCredentials());
            });

            services.AddMvcCore().AddAuthorization();

            var csvFormatterOptions = new CsvFormatterOptions();

            services.AddMvc(options =>
            {
                options.Filters.Add(typeof(DomainExceptionFilter));
                options.ModelBinderProviders.Insert(0, new ProviderModelBinder());
                options.RespectBrowserAcceptHeader = true;
                options.InputFormatters.Add(new CsvInputFormatter(csvFormatterOptions));
                options.OutputFormatters.Add(new CsvOutputFormatter(csvFormatterOptions));
                options.FormatterMappings.SetMediaTypeMappingForFormat("csv", "text/csv");
            })
            .AddCsvSerializerFormatters()
            .AddViewLocalization()
            .AddJsonOptions(x => SetDefaultSerializerSettings(x.SerializerSettings))
            .AddApplicationPart(typeof(Startup).Assembly);
        }