// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); //mapeando injeção de dependencias services.AddTransient <IProdutoBusiness, ProdutoBusiness>(); services.AddTransient <IProdutoRepository, ProdutoRepository>(cfg => new ProdutoRepository(Configuration.GetConnectionString("Aula"))); Mapper.Initialize(cfg => { cfg.AddProfile <ViewModelToEntityMap>(); cfg.AddProfile <EntityToViewModelMap>(); }); var signingConfigurations = new LoginConfiguration(); services.AddSingleton(signingConfigurations); var tokenConfigurations = new TokenConfiguration(); new ConfigureFromConfigurationOptions <TokenConfiguration>( Configuration.GetSection("TokenConfiguration")) .Configure(tokenConfigurations); services.AddSingleton(tokenConfigurations); services.AddAuthentication(authOptions => { authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(bearerOptions => { var paramsValidation = bearerOptions.TokenValidationParameters; paramsValidation.IssuerSigningKey = signingConfigurations.Key; paramsValidation.ValidAudience = tokenConfigurations.Audience; paramsValidation.ValidIssuer = tokenConfigurations.Issuer; // Valida a assinatura de um token recebido paramsValidation.ValidateIssuerSigningKey = true; // Verifica se um token recebido ainda é válido paramsValidation.ValidateLifetime = true; // Tempo de tolerância para a expiração de um token (utilizado // caso haja problemas de sincronismo de horário entre diferentes // computadores envolvidos no processo de comunicação) paramsValidation.ClockSkew = TimeSpan.Zero; }); // Ativa o uso do token como forma de autorizar o acesso // a recursos deste projeto services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes (JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); #region AutoMapper services.AddAutoMapper(typeof(Startup)); #endregion #region EntityFramework services.AddDbContext <DataColetrans> (options => options.UseSqlServer(Configuration.GetConnectionString("Coletrans"))); #region Criptografias e Serviços de Email services.AddTransient <Criptografia>(); services.AddTransient <SHA1Encrypt>(); var mailSettings = new MailSettings(); new ConfigureFromConfigurationOptions <MailSettings> (Configuration.GetSection("MailSettings")) .Configure(mailSettings); services.AddTransient <MailService> (map => new MailService(mailSettings)); #endregion #region Injeção de Dependência EntityFramework services.AddTransient <IMotoristaRepository, MotoristaRepository>(); services.AddScoped <IMotoristaService, MotoristaService>(); services.AddTransient <IRotaRepository, RotaRepository>(); services.AddTransient <IRotaService, RotaService>(); services.AddTransient <IClienteRepository, ClienteRepository>(); services.AddTransient <IClienteService, ClienteService>(); services.AddTransient <IConfiguracaoRepository, ConfiguracaoRepository>(); services.AddTransient <IContratoRepository, ContratoRepository>(); services.AddTransient <IMaterialRepository, MaterialRepository>(); services.AddScoped <IMaterialService, MaterialService>(); services.AddTransient <IMesReferenciaRepository, MesReferenciaRepository>(); services.AddTransient <IMesReferenciaService, MesReferenciaService>(); services.AddTransient <IOSRepository, OSRepository>(); services.AddTransient <IPagamentoRepository, PagamentoRepository>(); services.AddTransient <IDiasColetaRepository, DiasColetaRepository>(); services.AddTransient <IPerfilRepository, PerfilRepository>(); services.AddTransient <IRoteiroService, RoteiroService>(); services.AddTransient <IRoteiroRepository, RoteiroRepository>(); services.AddTransient <ITurnoRepository, TurnoRepository>(); #endregion #endregion #region Dapper config e Injeção de dependência var connectionString = Configuration.GetConnectionString("Coletrans"); //mapear as interfaces e classe criadas no repositorio services.AddTransient <IUsuarioRepository, UsuarioRepository> (map => new UsuarioRepository(connectionString)); #endregion #region Swagger services.AddSwaggerGen( c => { c.SwaggerDoc("v1", new Info { Title = "Sistema de Controle Coleta de Lixo", Description = "API REST para integração com serviços de coleta de lixo", Version = "v1", Contact = new Contact { Name = "Thiago Leta", Url = "Em construção", Email = "*****@*****.**" } }); //registrando a configuração para uso do HEADER no swagger c.OperationFilter <HeaderConfiguration>(); } ); #endregion #region Token //mapeando injeção de dependência para a classe tokenconfiguration var tokenConfiguration = new TokenConfiguration(); new ConfigureFromConfigurationOptions <TokenConfiguration> (Configuration.GetSection("TokenConfiguration")) .Configure(tokenConfiguration); //singleton -> terá uma unica instancia durante //toda a execução do projeto services.AddSingleton(tokenConfiguration); //mapear injeção de dependencia login configuration var loginConfiguration = new LoginConfiguration(); services.AddSingleton(loginConfiguration); //executando a configuração do JWT para autenticação JwtConfiguration.Register(services, tokenConfiguration, loginConfiguration); #endregion #region Cors services.AddRouting(o => o.LowercaseUrls = true); services.AddCors(o => o.AddPolicy("CorsPolicy", builder => { builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .WithExposedHeaders("*"); })); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { #region configuração para geração do TOKEN //configuração para geração do TOKEN de autenticação //configuração para definir a política de autenticação por JWT var signingConfigurations = new LoginConfiguration(); services.AddSingleton(signingConfigurations); var tokenConfigurations = new TokenConfiguration(); new ConfigureFromConfigurationOptions <TokenConfiguration>( Configuration.GetSection("TokenConfiguration")) //appsettings.json .Configure(tokenConfigurations); services.AddSingleton(tokenConfigurations); services.AddAuthentication(authOptions => { authOptions.DefaultAuthenticateScheme = JwtBearerDefaults .AuthenticationScheme; authOptions.DefaultChallengeScheme = JwtBearerDefaults .AuthenticationScheme; }).AddJwtBearer(bearerOptions => { var paramsValidation = bearerOptions.TokenValidationParameters; paramsValidation.IssuerSigningKey = signingConfigurations.Key; paramsValidation.ValidAudience = tokenConfigurations.Audience; paramsValidation.ValidIssuer = tokenConfigurations.Issuer; // Valida a assinatura de um token recebido paramsValidation.ValidateIssuerSigningKey = true; // Verifica se um token recebido ainda é válido paramsValidation.ValidateLifetime = true; // Tempo de tolerância para a expiração de um token (utilizado // caso haja problemas de sincronismo de horário entre diferentes // computadores envolvidos no processo de comunicação) paramsValidation.ClockSkew = TimeSpan.Zero; }); // Ativa o uso do token como forma de autorizar o acesso // a recursos deste projeto services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes (JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); #endregion //código (1) para o SWAGGER //mapeando o Swagger (documentação API) services.AddSwaggerGen( swagger => { swagger.SwaggerDoc("v1", new Info { Title = "Sistema Asp.Net Web API", Version = "v1", Description = "Projeto desenvolvido em aula - C# WebDeveloper", Contact = new Contact { Name = "COTI Informática", Url = "http://www.cotiinformatica.com.br", Email = "*****@*****.**" } }); //inclui o campo para token no swagger swagger.OperationFilter <TokenParameter>(); } ); #region Configuração da ConnectionString //configura para enviar a connectionString para as classes //resgatar a string de conexão do banco de dados //no arquivo appsettings.json string connectionString = Configuration.GetConnectionString("Aula"); //configurar as classes de repositorio para receber a connectionString //colocar a Interface e a respectiva classe services.AddTransient <IUsuarioRepository, UsuarioRepository> (map => new UsuarioRepository(connectionString)); services.AddTransient <IContaRepository, ContaRepository> (map => new ContaRepository(connectionString)); #endregion services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var connectionString = Configuration.GetConnectionString("Aula"); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddTransient <IProdutoBusiness, ProdutoBusiness>(); services.AddTransient <IUsuarioBusiness, UsuarioBusiness>(); services.AddTransient <IProdutoRepository, ProdutoRepository> (cfg => new ProdutoRepository (connectionString) ); services.AddTransient <IUsuarioRepository, UsuarioRepository> (cfg => new UsuarioRepository (connectionString) ); Mapper.Initialize(cfg => { cfg.AddProfile <ViewModelToEntityMap>(); cfg.AddProfile <EntityToViewModelMap>(); }); services.AddSwaggerGen( s => { s.SwaggerDoc("v1", new Info { Title = "Projeto Controle de Produtos", Description = "Curso C# WebDeveloper", Version = "v1", Contact = new Contact { Name = "COTI Informática", Email = "*****@*****.**", Url = "http://www.cotiinformatica.com.br" } }); s.OperationFilter <AddHeaderParameter>(); } ); var signingConfigurations = new LoginConfiguration(); services.AddSingleton(signingConfigurations); var tokenConfigurations = new TokenConfiguration(); new ConfigureFromConfigurationOptions <TokenConfiguration>( Configuration.GetSection("TokenConfiguration")) .Configure(tokenConfigurations); services.AddSingleton(tokenConfigurations); services.AddAuthentication(authOptions => { authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(bearerOptions => { var paramsValidation = bearerOptions.TokenValidationParameters; paramsValidation.IssuerSigningKey = signingConfigurations.Key; paramsValidation.ValidAudience = tokenConfigurations.Audience; paramsValidation.ValidIssuer = tokenConfigurations.Issuer; // Valida a assinatura de um token recebido paramsValidation.ValidateIssuerSigningKey = true; // Verifica se um token recebido ainda é válido paramsValidation.ValidateLifetime = true; // Tempo de tolerância para a expiração de um token (utilizado // caso haja problemas de sincronismo de horário entre diferentes // computadores envolvidos no processo de comunicação) paramsValidation.ClockSkew = TimeSpan.Zero; }); // Ativa o uso do token como forma de autorizar o acesso // a recursos deste projeto services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes (JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); }