Changes in iknow-api/Program.cs [bb02e3a:2e5e3a8]
- File:
-
- 1 edited
-
iknow-api/Program.cs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
iknow-api/Program.cs
rbb02e3a r2e5e3a8 1 using System.Text;2 using System.Text.Json.Serialization;3 using iknow_api.Data;4 using iknow_api.Repositories;5 using iknow_api.Services;6 using Microsoft.AspNetCore.Authentication.JwtBearer;7 using Microsoft.EntityFrameworkCore;8 using Microsoft.IdentityModel.Tokens;9 10 1 var builder = WebApplication.CreateBuilder(args); 11 2 12 // Add CORS policy 13 builder.Services.AddCors(options => 14 { 15 options.AddPolicy("AllowFrontend", policy => 16 { 17 var allowedOrigins = builder.Configuration.GetSection("AllowedOrigins").Get<string[]>() 18 ?? new[] { "http://localhost:3000" }; 19 20 policy.WithOrigins(allowedOrigins) // Your frontend URL(s) 21 .AllowAnyHeader() 22 .AllowAnyMethod() 23 .AllowCredentials(); 24 }); 25 }); 3 // Add services to the container. 26 4 27 builder.Services.AddAuthentication(options => 28 { 29 options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; 30 options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; 31 }) 32 .AddJwtBearer(options => 33 { 34 options.RequireHttpsMetadata = false; // only for development 35 options.SaveToken = true; 36 options.TokenValidationParameters = new TokenValidationParameters 37 { 38 ValidateIssuer = true, 39 ValidIssuer = "iknow-api", 40 41 ValidateAudience = true, 42 ValidAudience = "iknow-api", 43 44 ValidateLifetime = true, 45 46 ValidateIssuerSigningKey = true, 47 IssuerSigningKey = new SymmetricSecurityKey( 48 Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])) 49 }; 50 }); 51 // Add services to the container. 52 builder.Services.AddControllers() 53 .AddJsonOptions(options => 54 { 55 options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; 56 options.JsonSerializerOptions.PropertyNameCaseInsensitive = true; 57 options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); 58 }); 5 builder.Services.AddControllers(); 6 // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi 59 7 builder.Services.AddOpenApi(); 60 8 61 // Register DbContext62 builder.Services.AddDbContext<AppDbContext>(options =>63 options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));64 65 // Register your services66 builder.Services.AddScoped<IAuthService, AuthService>();67 builder.Services.AddScoped<IUserRepository, UserRepository>(); // You'll need to add the UserRepository implementation68 builder.Services.AddScoped<IUserService, UserService>();69 70 builder.Services.AddScoped<IRefreshTokenService, RefreshTokenService>();71 builder.Services.AddScoped<IUserRepository, UserRepository>();72 builder.Services.AddScoped<IRefreshTokenRepository, RefreshTokenRepository>();73 builder.Services.AddAuthorization();74 9 var app = builder.Build(); 75 10 … … 80 15 } 81 16 82 // Enable CORS - must be called before UseAuthentication and UseAuthorization 83 app.UseCors("AllowFrontend"); 17 app.UseHttpsRedirection(); 84 18 85 app.UseHttpsRedirection();86 app.UseAuthentication(); // <-- must come BEFORE UseAuthorization87 19 app.UseAuthorization(); 20 88 21 app.MapControllers(); 89 22
Note:
See TracChangeset
for help on using the changeset viewer.
