/// <summary> /// This method gets called by the runtime. Use this method to add services to the container. /// </summary> /// <param name="services"></param> public void ConfigureServices(IServiceCollection services) { services.AddWebApi(); services.AddSingleton <IConfiguration>(Configuration); services.AddMvc(config => { config.Filters.Add(typeof(UnhandledExceptionManager)); }); services.AddAutoMapperSetup(); services.AddSwaggerGen(s => { s.SwaggerDoc("v1", new Info { Version = "v1", Title = "Gateway Radix", Description = "Radix API Swagger", Contact = new Contact { Name = "Luciano Mattos", Email = "*****@*****.**" }, }); string caminhoAplicacao = PlatformServices.Default.Application.ApplicationBasePath; string nomeAplicacao = PlatformServices.Default.Application.ApplicationName; string caminhoXmlDoc = Path.Combine(caminhoAplicacao, $"{nomeAplicacao}.xml"); s.IncludeXmlComments(caminhoXmlDoc); }); InjectorBootstrapper.RegisterServices(services); }
public void ConfigureServices(IServiceCollection services) { services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddDefaultJsonOptions() .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining <BlogPostViewModelValidator>()); services.AddAutoMapperProfiles(); services.AddSqlServer(Configuration); services.AddPushSubscriptionService(Configuration); #region " Register Services " InjectorBootstrapper.RegisterServices(services); services.AddSingleton <ITempDataProvider, CookieTempDataProvider>(); #endregion #region " Configure Auth " ConfigureAuth(services); #endregion services.AddDistributedMemoryCache(); services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(1); }); }
public void ConfigureServices(IServiceCollection services) { services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddDefaultJsonOptions() .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining <BlogPostViewModelValidator>()); services.AddAutoMapper(typeof(BlogPostProfile), typeof(UserProfile)); services.AddEntityFrameworkSqlServer().AddDbContext <BlogContext>(options => { options.UseSqlServer(Configuration["BlogFKConn:ConnectionString"], sqlOptions => sqlOptions.MigrationsAssembly(typeof(BlogContext) .GetTypeInfo().Assembly.GetName().Name)); }); #region " Register Services " InjectorBootstrapper.RegisterServices(services); services.AddSingleton <ITempDataProvider, CookieTempDataProvider>(); #endregion #region " Configure Auth " ConfigureAuth(services); #endregion services.AddSession(); }
public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { // Configura a aplicação para retornar um Status Code 406 - NOT ACCEPTABLE // para outros formatos de respostas diferentes dos aceitados. // Obs.: por padrão o único aceitável é (application/json) options.ReturnHttpNotAcceptable = true; }) .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }); // Adicionando suporte ao AutoMapper; services.AddAutoMapper(); // Adicionando suporte ao Framework de Cache services.AddHttpCacheHeaders( expirationOptions => { expirationOptions.MaxAge = 60; }, validationOptions => { validationOptions.AddMustRevalidate = true; }); // Adicionando suporte a Rate Limiting and Throttling services.AddMemoryCache(); services.Configure <IpRateLimitOptions>(options => { options.GeneralRules = new List <RateLimitRule> { new RateLimitRule { Endpoint = "*", Limit = 1000, // para testes colocar 10 e realizar mais que 10 requests em menos de 5 minutos Period = "5m" }, new RateLimitRule { Endpoint = "*", Limit = 200, // para testes colocar 2 e realizar mais que 2 requests em menos de 10 segundos Period = "10s" } }; }); services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>(); // Adicionando o contexto e os services do negócio services.AddDbContext <UsuariosContext>(o => o.UseSqlServer(Configuration["connectionStrings:defaultConnectionString"])); InjectorBootstrapper.RegisterServices(services); }
public void Testar_RegisterServices() { //Arrange. IServiceCollection serviceCollection = new ServiceCollection(); //Act. InjectorBootstrapper.RegisterServices(serviceCollection, TestUtil.GetConfiguration()); var serviceProvider = serviceCollection.BuildServiceProvider(); //Assert. Assert.IsNotNull(serviceProvider); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddDbContext <ContentDbContext>(options => { options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"], b => b.MigrationsAssembly("Planru.NCMS.WebAPI")); options.UseOpenIddict(); }); services.AddIdentity <ApplicationUser, ApplicationRole>() .AddEntityFrameworkStores <ContentDbContext>() .AddDefaultTokenProviders(); // Configure Identity options and password complexity here services.Configure <IdentityOptions>(options => { // User settings options.User.RequireUniqueEmail = true; // //// Password settings // //options.Password.RequireDigit = true; // //options.Password.RequiredLength = 8; // //options.Password.RequireNonAlphanumeric = false; // //options.Password.RequireUppercase = true; // //options.Password.RequireLowercase = false; // //// Lockout settings // //options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30); // //options.Lockout.MaxFailedAccessAttempts = 10; options.ClaimsIdentity.UserNameClaimType = OpenIdConnectConstants.Claims.Name; options.ClaimsIdentity.UserIdClaimType = OpenIdConnectConstants.Claims.Subject; options.ClaimsIdentity.RoleClaimType = OpenIdConnectConstants.Claims.Role; }); // Register the OpenIddict services. services.AddOpenIddict(options => { options.AddEntityFrameworkCoreStores <ContentDbContext>(); options.AddMvcBinders(); options.EnableTokenEndpoint("/connect/token"); options.AllowPasswordFlow(); options.AllowRefreshTokenFlow(); options.DisableHttpsRequirement(); // options.UseJsonWebTokens(); //Use JWT if preferred options.AddSigningKey(new SymmetricSecurityKey(System.Text.Encoding.ASCII.GetBytes(Configuration["STSKey"]))); }); // Enable cors if required //services.AddCors(); services.AddAuthorization(options => { options.AddPolicy(AuthPolicies.ViewUserByUserIdPolicy, policy => policy.Requirements.Add(new ViewUserByIdRequirement())); options.AddPolicy(AuthPolicies.ViewUsersPolicy, policy => policy.RequireClaim(CustomClaimTypes.Permission, ApplicationPermissions.ViewUsers)); options.AddPolicy(AuthPolicies.ManageUserByUserIdPolicy, policy => policy.Requirements.Add(new ManageUserByIdRequirement())); options.AddPolicy(AuthPolicies.ManageUsersPolicy, policy => policy.RequireClaim(CustomClaimTypes.Permission, ApplicationPermissions.ManageUsers)); options.AddPolicy(AuthPolicies.ViewRoleByRoleNamePolicy, policy => policy.Requirements.Add(new ViewRoleByNameRequirement())); options.AddPolicy(AuthPolicies.ViewRolesPolicy, policy => policy.RequireClaim(CustomClaimTypes.Permission, ApplicationPermissions.ViewRoles)); options.AddPolicy(AuthPolicies.AssignRolesPolicy, policy => policy.Requirements.Add(new AssignRolesRequirement())); options.AddPolicy(AuthPolicies.ManageRolesPolicy, policy => policy.RequireClaim(CustomClaimTypes.Permission, ApplicationPermissions.ManageRoles)); }); // Auth Policies services.AddSingleton <IAuthorizationHandler, ViewUserByIdHandler>(); services.AddSingleton <IAuthorizationHandler, ManageUserByIdHandler>(); services.AddSingleton <IAuthorizationHandler, ViewRoleByNameHandler>(); services.AddSingleton <IAuthorizationHandler, AssignRolesHandler>(); InjectorBootstrapper.RegisterServices(services, Configuration); Mapper.Initialize(cfg => { cfg.AddProfile <IdentityAutoMapperProfile>(); }); // Add framework services. services.AddMvc(); }
public static void AddInjectorBootstrapper(this IServiceCollection services, IConfiguration configuration) { InjectorBootstrapper.RegisterServices(services, configuration); }
//Injeção de dependencia private static void RegisterServices(IServiceCollection services) { InjectorBootstrapper.RegisterServices(services); }