Advertisement
Guest User

KrapicBackendCORS

a guest
Feb 1st, 2024
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.89 KB | Source Code | 0 0
  1. using Microsoft.AspNetCore.Authentication.JwtBearer;
  2. using Microsoft.EntityFrameworkCore;
  3. using Microsoft.IdentityModel.Tokens;
  4. using Microsoft.OpenApi.Models;
  5. using Rezervacije.Data;
  6. using Rezervacije.Services;
  7. using Rezervacije.Web.Services;
  8. using Swashbuckle.AspNetCore.Filters;
  9. using System.Text;
  10.  
  11. var builder = WebApplication.CreateBuilder(args);
  12.  
  13. // Add services to the container.
  14.  
  15.  
  16. builder.Services.AddControllersWithViews();
  17. builder.Services.AddSwaggerGen(options =>
  18. {
  19.     options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
  20.     {
  21.         In = ParameterLocation.Header,
  22.         Name = "Authorization",
  23.         Type = SecuritySchemeType.ApiKey
  24.     });
  25.     //Bearer jwt-token
  26.  
  27.     options.OperationFilter<SecurityRequirementsOperationFilter>();
  28. });
  29.  
  30. builder.Services.AddCors(options =>
  31. {
  32.     options.AddPolicy("AllowReactFrontend",
  33.         builder => builder
  34.             .WithOrigins("http://localhost:44491")
  35.             .AllowAnyMethod()
  36.             .AllowAnyHeader()
  37.             .AllowCredentials());
  38. });
  39.  
  40. builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
  41.         .AddJwtBearer(options =>
  42.         {
  43.             options.TokenValidationParameters = new TokenValidationParameters
  44.             {
  45.                 ValidateIssuerSigningKey = true,
  46.                 ValidateIssuer = true,
  47.                 ValidateAudience = true,
  48.                 ValidateLifetime = true,
  49.                 ValidIssuer = builder.Configuration.GetSection("AppSettings:Issuer").Value!,
  50.                 ValidAudience = builder.Configuration.GetSection("AppSettings:Audience").Value!,
  51.                 IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(
  52.                                        builder.Configuration.GetSection("AppSettings:Token").Value!))
  53.             };
  54.  
  55.         });
  56.  
  57. builder.Services.AddAuthorization();
  58.  
  59. var connectionString = builder.Configuration.GetConnectionString("DefaultConnection")
  60.     ?? throw new InvalidOperationException("Default connection string not found");
  61.  
  62. builder.Services.AddDbContextFactory<RezervacijeDbContext>(options =>
  63.                     options.UseNpgsql(connectionString), ServiceLifetime.Transient);
  64.  
  65.  
  66. builder.Services.AddScoped<IInfobipApiService, InfobipApiService>();
  67. builder.Services.AddScoped<IAuthentificationService, AuthentificationService>();
  68. builder.Services.AddScoped<IBusinessService, BusinessService>();
  69. builder.Services.AddScoped<IProfileDataService, ProfileDataService>();
  70. builder.Services.AddScoped<IReservationService, ReservationService>();
  71.  
  72.  
  73. var app = builder.Build();
  74.  
  75. // Configure the HTTP request pipeline.
  76. if (app.Environment.IsDevelopment())
  77. {
  78.     app.UseSwagger();
  79.     app.UseSwaggerUI();
  80. }
  81.  
  82. app.UseCors("AllowReactFrontend");
  83.  
  84. app.UseHttpsRedirection();
  85.  
  86. app.UseAuthentication();
  87. app.UseAuthorization();
  88.  
  89. app.UseStatusCodePages();
  90.  
  91. app.MapControllers();
  92.  
  93. app.Run();
  94.  
Tags: C# backend cors
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement