コード例 #1
0
 public LoginBusinessImpl(IUserRepository repository, SigningConfigutaions signingConfigurations,
                          TokenConfigurations tokenConfiguration)
 {
     _repository            = repository;
     _signingConfigurations = signingConfigurations;
     _tokenConfiguration    = tokenConfiguration;
 }
コード例 #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var connectionString = _configuration["MySqlConnection:MySqlConnectionString"];

            services.AddDbContext <MySQLContext>(options => options.UseMySql(connectionString));

            //Execução EVOLVE
            ExecutingMigrations(connectionString);



            //Configurações de AUTENTICAÇÃO
            var signingConfigurations = new SigningConfigutaions();

            services.AddSingleton(signingConfigurations);

            var tokenConfiguration = new TokenConfigurations();

            //Faz leitura no arquivo appsettings.json as configurações da sessão
            new ConfigureFromConfigurationOptions <TokenConfigurations>(
                _configuration.GetSection("TokenConfigurations")
                ).Configure(tokenConfiguration);

            services.AddSingleton(tokenConfiguration);

            //Configurações da Autenticação usando Bearer
            services.AddAuthentication(authOpt =>
            {
                authOpt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                authOpt.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(bearerOpt =>
            {
                var paramsValidation = bearerOpt.TokenValidationParameters;
                paramsValidation.IssuerSigningKey = signingConfigurations.Key;
                paramsValidation.ValidAudience    = tokenConfiguration.Audience;
                paramsValidation.ValidIssuer      = tokenConfiguration.Issuer;

                paramsValidation.ValidateIssuerSigningKey = true;

                paramsValidation.ValidateLifetime = true;

                paramsValidation.ClockSkew = TimeSpan.Zero; //Janela de tolerância do token
            });

            //Configurações de Autorização do tipo Bearer sempre requerindo o bearer
            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                               .RequireAuthenticatedUser().Build());
            });

            services.AddMvc(opt =>
            {
                opt.RespectBrowserAcceptHeader = true;
                opt.FormatterMappings.SetMediaTypeMappingForFormat("xml", MediaTypeHeaderValue.Parse("text/xml"));
                opt.FormatterMappings.SetMediaTypeMappingForFormat("json", MediaTypeHeaderValue.Parse("application/json"));
            })
            .AddXmlSerializerFormatters();

            var filterOptions = new HyperMediaFilterOptions();

            filterOptions.ObjectContentResponseEnricherList.Add(new PersonEnricher());
            filterOptions.ObjectContentResponseEnricherList.Add(new BookEnricher());
            services.AddSingleton(filterOptions);

            services.AddApiVersioning();

            var swaggerDocInfo = new Info()
            {
                Title   = "RESTFull API com ASP.NET Core 2.0",
                Version = "v1"
            };

            services.AddSwaggerGen(s => s.SwaggerDoc("v1", swaggerDocInfo));

            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(IRepository <>), typeof(GenericRepository <>));
        }