// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //Connection database var connectionString = _configuration["MySqlConnection:MySqlConnection"]; services.AddDbContext <MySQLContext>(options => options.UseMySql(connectionString)); //Add Migrations support ExecuteMigrations(connectionString); //Jwt var signingConfigurations = new SigningConfigurations(); services.AddSingleton(signingConfigurations); var tokenCongigurations = new TokenCofiguration(); new ConfigureFromConfigurationOptions <TokenCofiguration>( _configuration.GetSection("TokenCofigurations") ) .Configure(tokenCongigurations); services.AddSingleton(tokenCongigurations); services.AddAuthentication(authOptions => { authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(bearerOptions => { var paramsValidation = bearerOptions.TokenValidationParameters; paramsValidation.IssuerSigningKey = signingConfigurations.Key; paramsValidation.ValidAudience = tokenCongigurations.Audience; paramsValidation.ValidIssuer = tokenCongigurations.Issuer; // Validates the signing of a received token paramsValidation.ValidateIssuerSigningKey = true; // Checks if a received token is still valid paramsValidation.ValidateLifetime = true; // Tolerance time for the expiration of a token (used in case // of time synchronization problems between different // computers involved in the communication process) paramsValidation.ClockSkew = TimeSpan.Zero; }); services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); //Add Framework services. services.AddMvc(options => { options.RespectBrowserAcceptHeader = true; options.FormatterMappings.SetMediaTypeMappingForFormat("xml", MediaTypeHeaderValue.Parse("text/xml")); options.FormatterMappings.SetMediaTypeMappingForFormat("json", MediaTypeHeaderValue.Parse("application/json")); }) .AddXmlSerializerFormatters(); //Define as opções do filtro HATEOAS var filterOptions = new HyperMediaFilterOptions(); filterOptions.ObjectContentResponseEnricherList.Add(new PersonEnricher()); filterOptions.ObjectContentResponseEnricherList.Add(new BookEnricher()); //Injeta o serviço services.AddSingleton(filterOptions); services.AddApiVersioning(option => option.ReportApiVersions = true); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "RESTful API With ASP.NET Core 2.0", Version = "v1" }); }); //Dependency Injection services.AddScoped <IPersonBusiness, PersonBusinessImpl>(); services.AddScoped <IBookBusiness, BookBusinessImpl>(); services.AddScoped <ILoginBusiness, LoginBusinessImpl>(); services.AddScoped <IFileBusiness, FileBusinessImpl>(); services.AddScoped <IUserRepository, UserRepositoryImpl>(); services.AddScoped <IPersonRepository, PersonRepositoryImpl>(); services.AddScoped(typeof(IPersonRepository <>), typeof(GenericRepository <>)); }
public LoginBusinessImpl(IUserRepository repository, SigningConfigurations signingConfigurations, TokenCofiguration tokenCofigurarion) { _repository = repository; _signingConfigurations = signingConfigurations; _tokenCofigurarion = tokenCofigurarion; }