From 4c1e4a323d24493e4e90f9410662d2c01e7cabc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 27 Nov 2019 16:21:28 +0300 Subject: [PATCH] Enable cors --- .../angular/src/environments/environment.ts | 4 +-- ...panyName.MyProjectName.HttpApi.Host.csproj | 2 +- .../MyProjectNameHttpApiHostModule.cs | 30 +++++++++++++++++-- .../appsettings.json | 3 ++ .../MyProjectNameIdentityServerModule.cs | 29 ++++++++++++++++-- .../appsettings.json | 4 +++ .../MyProjectNameWebHostModule.cs | 2 +- .../appsettings.json | 4 ++- 8 files changed, 69 insertions(+), 9 deletions(-) diff --git a/templates/module/angular/src/environments/environment.ts b/templates/module/angular/src/environments/environment.ts index ca462ff043..70beceec1a 100644 --- a/templates/module/angular/src/environments/environment.ts +++ b/templates/module/angular/src/environments/environment.ts @@ -6,7 +6,7 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44305', + issuer: 'https://localhost:44301', clientId: 'MyProjectName_App', dummyClientSecret: '1q2w3e*', scope: 'MyProjectName', @@ -16,7 +16,7 @@ export const environment = { }, apis: { default: { - url: 'https://localhost:44305', + url: 'https://localhost:44300', }, }, localization: { diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index 26fa1648c0..919353fe37 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -16,7 +16,7 @@ - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index 74edbc03a3..b0fcc5f9b6 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -1,5 +1,8 @@ -using System.IO; +using System; +using System.IO; +using System.Linq; using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -10,6 +13,7 @@ using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.Swagger; using Volo.Abp; using Volo.Abp.AspNetCore.MultiTenancy; +using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.Autofac; using Volo.Abp.Caching; @@ -28,7 +32,7 @@ namespace MyCompanyName.MyProjectName typeof(MyProjectNameApplicationModule), typeof(MyProjectNameEntityFrameworkCoreModule), typeof(MyProjectNameHttpApiModule), - typeof(AbpAspNetCoreMultiTenancyModule), + typeof(AbpAspNetCoreMvcUiMultiTenancyModule), typeof(AbpAutofacModule), typeof(AbpEntityFrameworkCoreSqlServerModule), typeof(AbpAuditLoggingEntityFrameworkCoreModule), @@ -37,6 +41,8 @@ namespace MyCompanyName.MyProjectName )] public class MyProjectNameHttpApiHostModule : AbpModule { + private const string DefaultCorsPolicyName = "Default"; + public override void ConfigureServices(ServiceConfigurationContext context) { var hostingEnvironment = context.Services.GetHostingEnvironment(); @@ -105,6 +111,25 @@ namespace MyCompanyName.MyProjectName .AddDataProtection() .PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); } + + context.Services.AddCors(options => + { + options.AddPolicy(DefaultCorsPolicyName, builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"] + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); } public override void OnApplicationInitialization(ApplicationInitializationContext context) @@ -119,6 +144,7 @@ namespace MyCompanyName.MyProjectName app.UseCorrelationId(); app.UseVirtualFiles(); app.UseRouting(); + app.UseCors(DefaultCorsPolicyName); app.UseAuthentication(); app.UseAuthorization(); if (MultiTenancyConsts.IsEnabled) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json index 6a2d586b0e..6dceb9c4b9 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json @@ -1,4 +1,7 @@ { + "App": { + "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200" + }, "ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName_Main;Trusted_Connection=True;MultipleActiveResultSets=true", "MyProjectName": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName_Module;Trusted_Connection=True;MultipleActiveResultSets=true" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index 541c7b8c07..76d930d7ea 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -1,4 +1,7 @@ -using Microsoft.AspNetCore.Builder; +using System; +using System.Linq; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; @@ -65,6 +68,8 @@ namespace MyCompanyName.MyProjectName )] public class MyProjectNameIdentityServerModule : AbpModule { + private const string DefaultCorsPolicyName = "Default"; + public override void ConfigureServices(ServiceConfigurationContext context) { var hostingEnvironment = context.Services.GetHostingEnvironment(); @@ -100,7 +105,7 @@ namespace MyCompanyName.MyProjectName Configure(options => { - options.Applications["MVC"].RootUrl = configuration["AppSelfUrl"]; + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; }); context.Services.AddAuthentication() @@ -133,6 +138,25 @@ namespace MyCompanyName.MyProjectName .AddDataProtection() .PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); } + + context.Services.AddCors(options => + { + options.AddPolicy(DefaultCorsPolicyName, builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"] + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); } public override void OnApplicationInitialization(ApplicationInitializationContext context) @@ -147,6 +171,7 @@ namespace MyCompanyName.MyProjectName app.UseCorrelationId(); app.UseVirtualFiles(); app.UseRouting(); + app.UseCors(DefaultCorsPolicyName); app.UseAuthentication(); app.UseJwtTokenMiddleware(); if (MultiTenancyConsts.IsEnabled) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/appsettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/appsettings.json index ea636d00ad..0386db1e6a 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/appsettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/appsettings.json @@ -1,4 +1,8 @@ { + "App": { + "SelfUrl": "https://localhost:44301/", + "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200" + }, "AppSelfUrl": "https://localhost:44301/", "ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName_Main;Trusted_Connection=True;MultipleActiveResultSets=true" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs index 6438758c3e..6eb3dc9ea3 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs @@ -98,7 +98,7 @@ namespace MyCompanyName.MyProjectName { Configure(options => { - options.Applications["MVC"].RootUrl = configuration["AppSelfUrl"]; + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; }); } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/appsettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/appsettings.json index 96a98545b1..22405a15b6 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/appsettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/appsettings.json @@ -1,5 +1,7 @@ { - "AppSelfUrl": "https://localhost:44302/", + "App": { + "SelfUrl": "https://localhost:44302/" + }, "RemoteServices": { "Default": { "BaseUrl": "https://localhost:44301/"