From ba21feccd12d831780bcde15b9ca4a97952dc339 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 30 May 2022 16:36:23 +0800 Subject: [PATCH] Enable Swagger in host projects. --- .../MyProjectNameModule.cs | 14 +++++++++----- .../appsettings.json | 5 +++++ .../MyProjectNameModule.cs | 18 +++++++++++++----- .../appsettings.json | 5 +++++ .../appsettings.json | 2 +- 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs index 59e40043af..3add01a618 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs @@ -126,7 +126,7 @@ public class MyProjectNameModule : AbpModule ConfigureMultiTenancy(); ConfigureUrls(configuration); ConfigureAutoMapper(context); - ConfigureSwagger(context.Services); + ConfigureSwagger(context.Services, configuration); ConfigureAutoApiControllers(); ConfigureVirtualFiles(hostingEnvironment); ConfigureLocalization(); @@ -225,16 +225,20 @@ public class MyProjectNameModule : AbpModule }); } - private void ConfigureSwagger(IServiceCollection services) + private void ConfigureSwagger(IServiceCollection services, IConfiguration configuration) { - services.AddAbpSwaggerGen( + services.AddAbpSwaggerGenWithOAuth( + configuration["AuthServer:Authority"], + new Dictionary + { + {"MyProjectName", "MyProjectName API"} + }, options => { options.SwaggerDoc("v1", new OpenApiInfo { Title = "MyProjectName API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); options.CustomSchemaIds(type => type.FullName); - } - ); + }); } private void ConfigureAutoMapper(ServiceConfigurationContext context) diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json index 284615a19b..b4db7dbf0a 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json @@ -14,6 +14,11 @@ "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" }, + "AuthServer": { + "Authority": "https://localhost:44300", + "RequireHttpsMetadata": "true", + "SwaggerClientId": "MyProjectName_Swagger" + }, "OpenIddict": { "Applications": { "MyProjectName_App": { diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs index d082c05edc..6884b712c6 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs @@ -128,7 +128,7 @@ public class MyProjectNameModule : AbpModule ConfigureMultiTenancy(); ConfigureUrls(configuration); ConfigureAutoMapper(context); - ConfigureSwagger(context.Services); + ConfigureSwagger(context.Services, configuration); ConfigureAutoApiControllers(); ConfigureVirtualFiles(hostingEnvironment); ConfigureLocalization(); @@ -227,16 +227,20 @@ public class MyProjectNameModule : AbpModule }); } - private void ConfigureSwagger(IServiceCollection services) + private void ConfigureSwagger(IServiceCollection services, IConfiguration configuration) { - services.AddAbpSwaggerGen( + services.AddAbpSwaggerGenWithOAuth( + configuration["AuthServer:Authority"], + new Dictionary + { + {"MyProjectName", "MyProjectName API"} + }, options => { options.SwaggerDoc("v1", new OpenApiInfo { Title = "MyProjectName API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); options.CustomSchemaIds(type => type.FullName); - } - ); + }); } private void ConfigureAutoMapper(ServiceConfigurationContext context) @@ -343,6 +347,10 @@ public class MyProjectNameModule : AbpModule app.UseAbpSwaggerUI(options => { options.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProjectName API"); + + var configuration = context.GetConfiguration(); + options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); + options.OAuthScopes("MyProjectName"); }); app.UseAuditing(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json index 251acbe2ac..c35a5736a1 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json @@ -14,6 +14,11 @@ "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" }, + "AuthServer": { + "Authority": "https://localhost:44300", + "RequireHttpsMetadata": "true", + "SwaggerClientId": "MyProjectName_Swagger" + }, "OpenIddict": { "Applications": { "MyProjectName_App": { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json index 4b7a8f4029..5131851809 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json @@ -12,7 +12,7 @@ "Authority": "https://localhost:44301", "RequireHttpsMetadata": "true", "SwaggerClientId": "MyProjectName_Swagger" -}, + }, "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" }