示例#1
0
        public void ConfigureServices(IServiceCollection services)
        {
            //Agrega el filtro de validación de datos indicandole el paquete donde se encuentran
            //todas las clases de validacion de datos
            services.AddMvc(options =>
            {
                options.EnableEndpointRouting = false;
                options.Filters.Add(new ValidationFilter());
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
            .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining <CycleValidator>());

            services.Configure <ApiBehaviorOptions>(options =>
            {
                options.SuppressModelStateInvalidFilter = true;
            });

            /// Registra el contexto de la base de datos
            string connectionString = Configuration.GetConnectionString("DefaultConnection");

            IOCRegister.AddDBContext(services, connectionString);

            /// Registra todos los servicios
            IOCRegister.AddServices(services);

            /// Registra todos los repositorios
            IOCRegister.AddRepositories(services);

            /// Agrega los controladores
            services.AddControllers();


            //Agrega el cors para permitir peticiones desde el mismo ip local
            services.AddCors(Options =>
            {
                Options.AddPolicy("EnableCORS", builder =>
                {
                    builder.AllowAnyHeader()
                    .AllowAnyMethod()
                    .AllowCredentials()
                    .WithExposedHeaders(HeaderNames.ContentDisposition)
                    .WithOrigins("http://192.168.0.102:4200", "http://192.168.0.100:4200")
                    .Build();
                });
            });
        }
示例#2
0
        public void ConfigureServices(IServiceCollection services)
        {
            //Agrega el filtro de validación de datos indicandole el paquete donde se encuentran
            //todas las clases de validacion de datos
            services.AddMvc(options =>
            {
                options.EnableEndpointRouting = false;
                options.Filters.Add(new ValidationFilter());
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
            .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining <CycleValidator>());

            services.Configure <ApiBehaviorOptions>(options =>
            {
                options.SuppressModelStateInvalidFilter = true;
            });

            /// Registra el contexto de la base de datos
            string connectionString = Configuration.GetConnectionString("DefaultConnection");

            IOCRegister.AddDBContext(services, connectionString);

            /// Registra todos los servicios
            IOCRegister.AddServices(services);

            /// Registra todos los repositorios
            IOCRegister.AddRepositories(services);

            /// Agrega los controladores
            services.AddControllers();

            //Autoriza el acceso a las rutas según el role
            services.AddAuthorization(options =>
            {
                options.DefaultPolicy = new AuthorizationPolicyBuilder(JwtBearerDefaults
                                                                       .AuthenticationScheme)
                                        .RequireAuthenticatedUser()
                                        .Build();
            });

            //Valida el token
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters()
                {
                    ClockSkew                = TimeSpan.Zero,
                    ValidateIssuer           = false,
                    ValidateAudience         = false,
                    ValidateIssuerSigningKey = true,
                    ValidateLifetime         = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(
                        Encoding.ASCII.GetBytes(Configuration.GetValue <string>("Jwt:Secret")))
                };
            });

            //Agrega el cors para permitir peticiones desde el mismo ip local
            services.AddCors(Options =>
            {
                Options.AddPolicy("EnableCORS", builder =>
                {
                    builder.AllowAnyHeader()
                    .AllowAnyMethod()
                    .WithExposedHeaders(HeaderNames.ContentDisposition)
                    .AllowAnyOrigin()
                    .Build();
                });
            });
        }