Browse Source

Enable CORS for the app template

pull/1557/head
Halil İbrahim Kalkan 7 years ago
parent
commit
6bc918a1b4
  1. 30
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs
  2. 3
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json
  3. 31
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs
  4. 5
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.json
  5. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs
  6. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json
  7. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs
  8. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json

30
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs

@ -1,4 +1,6 @@
using System.IO; using System;
using System.IO;
using System.Linq;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
@ -27,6 +29,8 @@ namespace MyCompanyName.MyProjectName
)] )]
public class MyProjectNameHttpApiHostModule : AbpModule public class MyProjectNameHttpApiHostModule : AbpModule
{ {
private const string DefaultCorsPolicyName = "Default";
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
@ -38,6 +42,7 @@ namespace MyCompanyName.MyProjectName
ConfigureLocalization(); ConfigureLocalization();
ConfigureVirtualFileSystem(context); ConfigureVirtualFileSystem(context);
ConfigureRedis(context, configuration, hostingEnvironment); ConfigureRedis(context, configuration, hostingEnvironment);
ConfigureCors(context, configuration);
} }
private void ConfigureVirtualFileSystem(ServiceConfigurationContext context) private void ConfigureVirtualFileSystem(ServiceConfigurationContext context)
@ -116,10 +121,33 @@ namespace MyCompanyName.MyProjectName
} }
} }
private void ConfigureCors(ServiceConfigurationContext context, IConfigurationRoot configuration)
{
context.Services.AddCors(options =>
{
options.AddPolicy(DefaultCorsPolicyName, builder =>
{
builder
.WithOrigins(
configuration["App:CorsOrigins"]
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(o => o.RemovePostFix("/"))
.ToArray()
)
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
}
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
var app = context.GetApplicationBuilder(); var app = context.GetApplicationBuilder();
app.UseCors(DefaultCorsPolicyName);
app.UseVirtualFiles(); app.UseVirtualFiles();
app.UseAuthentication(); app.UseAuthentication();
if (MultiTenancyConsts.IsEnabled) if (MultiTenancyConsts.IsEnabled)

3
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json

@ -1,4 +1,7 @@
{ {
"App": {
"CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200"
},
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true"
}, },

31
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs

@ -1,8 +1,11 @@
using System.IO; using System;
using System.IO;
using System.Linq;
using Localization.Resources.AbpUi; using Localization.Resources.AbpUi;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using MyCompanyName.MyProjectName.EntityFrameworkCore; using MyCompanyName.MyProjectName.EntityFrameworkCore;
using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.Localization;
@ -33,6 +36,8 @@ namespace MyCompanyName.MyProjectName
)] )]
public class MyProjectNameIdentityServerModule : AbpModule public class MyProjectNameIdentityServerModule : AbpModule
{ {
private const string DefaultCorsPolicyName = "Default";
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
@ -78,7 +83,7 @@ namespace MyCompanyName.MyProjectName
Configure<AppUrlOptions>(options => Configure<AppUrlOptions>(options =>
{ {
options.Applications["MVC"].RootUrl = configuration["AppSelfUrl"]; options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
}); });
Configure<BackgroundJobOptions>(options => Configure<BackgroundJobOptions>(options =>
@ -98,12 +103,32 @@ namespace MyCompanyName.MyProjectName
.AddDataProtection() .AddDataProtection()
.PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); .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()
)
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
}
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
var app = context.GetApplicationBuilder(); var app = context.GetApplicationBuilder();
app.UseCors(DefaultCorsPolicyName);
app.UseCorrelationId(); app.UseCorrelationId();
app.UseVirtualFiles(); app.UseVirtualFiles();
app.UseAuthentication(); app.UseAuthentication();

5
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.json

@ -1,5 +1,8 @@
{ {
"AppSelfUrl": "https://localhost:44301", "App": {
"SelfUrl": "https://localhost:44301",
"CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200"
},
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true"
}, },

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs

@ -81,7 +81,7 @@ namespace MyCompanyName.MyProjectName.Web
{ {
Configure<AppUrlOptions>(options => Configure<AppUrlOptions>(options =>
{ {
options.Applications["MVC"].RootUrl = configuration["AppSelfUrl"]; options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
}); });
} }

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json

@ -1,5 +1,7 @@
{ {
"AppSelfUrl": "https://localhost:44302", "App": {
"SelfUrl": "https://localhost:44302"
},
"RemoteServices": { "RemoteServices": {
"Default": { "Default": {
"BaseUrl": "https://localhost:44300/" "BaseUrl": "https://localhost:44300/"

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs

@ -79,7 +79,7 @@ namespace MyCompanyName.MyProjectName.Web
{ {
Configure<AppUrlOptions>(options => Configure<AppUrlOptions>(options =>
{ {
options.Applications["MVC"].RootUrl = configuration["AppSelfUrl"]; options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
}); });
} }

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json

@ -1,5 +1,7 @@
{ {
"AppSelfUrl": "https://localhost:44303", "App": {
"SelfUrl": "https://localhost:44303"
},
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true"
}, },

Loading…
Cancel
Save