using GrossesMitainesAPI.Data; using GrossesMitainesAPI.Services; using Microsoft.AspNet.Identity; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using System.Net; var MyAllowSpecificOrigins = "_myAllowSpecificOrigins"; var builder = WebApplication.CreateBuilder(args); builder.Services.AddCors(options => { options.AddPolicy(name: MyAllowSpecificOrigins, policy => { policy.WithOrigins("http://localhost:3000", "http://localhost:3001") .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials(); }); }); builder.Services.AddControllers(); builder.Services.AddAuthorization(); builder.Services.AddAuthentication().AddIdentityCookies(); // Source: https://github.com/dotnet/aspnetcore/issues/9039 builder.Services.ConfigureApplicationCookie(o => { o.Events = new CookieAuthenticationEvents() { OnRedirectToLogin = (ctx) => { if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200) { ctx.Response.StatusCode = 401; } return Task.CompletedTask; }, OnRedirectToAccessDenied = (ctx) => { if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200) { ctx.Response.StatusCode = 403; } return Task.CompletedTask; } }; }); builder.Services.AddIdentityCore() .AddRoles() .AddEntityFrameworkStores() .AddSignInManager(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddDbContextFactory(options => { options.UseSqlServer("DefaultConnection"); }); builder.Services.AddSingleton(); builder.Services.BuildServiceProvider().GetRequiredService(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseCors(MyAllowSpecificOrigins); app.UseAuthorization(); app.UseAuthentication(); app.MapControllers(); app.Run();