diff --git a/aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj b/aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj index 0ad5f47cf..02a8a5e73 100644 --- a/aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj +++ b/aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj @@ -1,9 +1,9 @@ - net9.0 + net9.0 true LINGYUN.Abp.MicroService.Templates - 9.1.1 + 9.2.0 colin.in@foxmail.com Abp framework micro-service template MIT diff --git a/aspnet-core/templates/micro/content/Directory.Packages.props b/aspnet-core/templates/micro/content/Directory.Packages.props index adf6b0486..a97bfb3e2 100644 --- a/aspnet-core/templates/micro/content/Directory.Packages.props +++ b/aspnet-core/templates/micro/content/Directory.Packages.props @@ -1,17 +1,18 @@ - 8.3.2 - 2.14.1 - 9.1.1 - 9.1.1 - 9.0.0.0 - 9.0.0.0 - 9.0.0.0 + 8.3.5 + 2.15.1 + 9.2.0 + 9.2.0 + 9.0.4 + 9.0.4 + 9.0.4 true + @@ -84,7 +85,6 @@ - @@ -243,7 +243,7 @@ - + @@ -428,37 +428,37 @@ - - - + + + - - - - - - + + + + + + - + - - - - - - - - + + + + + + + + - + @@ -466,33 +466,33 @@ - - - - + + + + - + - + - - + + - - - - + + + + - - + + diff --git a/aspnet-core/templates/micro/content/common.props b/aspnet-core/templates/micro/content/common.props index c439e21d7..3c49ad117 100644 --- a/aspnet-core/templates/micro/content/common.props +++ b/aspnet-core/templates/micro/content/common.props @@ -1,12 +1,12 @@ latest - 9.1.1 + 9.2.0 colin $(NoWarn);CS1591;CS0436;CS8618;NU1803 https://github.com/colinin/abp-next-admin $(SolutionDir)LocalNuget - 9.1.1 + 9.2.0 MIT git https://github.com/colinin/abp-next-admin @@ -35,4 +35,8 @@ $(SolutionDir)LocalNuget + + $(SolutionDir)LocalNuget + + \ No newline at end of file diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj index 28b26e15e..f58692a52 100644 --- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj +++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj @@ -15,8 +15,8 @@ + - @@ -60,8 +60,8 @@ + - diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs index 5b5b31628..27c854419 100644 --- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs +++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs @@ -7,6 +7,7 @@ using LINGYUN.Abp.Localization.CultureMap; using LINGYUN.Abp.LocalizationManagement; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; +using LINGYUN.Abp.TextTemplating; using LINGYUN.Abp.Wrapper; using Medallion.Threading; using Medallion.Threading.Redis; @@ -18,10 +19,11 @@ using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Caching.StackExchangeRedis; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; -using PackageName.CompanyName.ProjectName.Localization; using StackExchange.Redis; using System; +using System.Collections.Generic; using System.Linq; using System.Text.Encodings.Web; using System.Text.Unicode; @@ -30,13 +32,16 @@ using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.AntiForgery; using Volo.Abp.Auditing; using Volo.Abp.Caching; +using Volo.Abp.FeatureManagement; using Volo.Abp.GlobalFeatures; using Volo.Abp.Http.Client; using Volo.Abp.Json; using Volo.Abp.Json.SystemTextJson; using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; +using Volo.Abp.PermissionManagement; using Volo.Abp.Security.Claims; +using Volo.Abp.SettingManagement; using Volo.Abp.Threading; using Volo.Abp.Timing; using Volo.Abp.VirtualFileSystem; @@ -46,7 +51,6 @@ namespace PackageName.CompanyName.ProjectName; public partial class ProjectNameHttpApiHostModule { public static string ApplicationName { get; set; } = "ProjectNameService"; - private const string DefaultCorsPolicyName = "Default"; private static readonly OneTimeRunner OneTimeRunner = new(); private void PreConfigureFeature() @@ -235,6 +239,54 @@ public partial class ProjectNameHttpApiHostModule }); } + private void ConfigureFeatureManagement(IConfiguration configuration) + { + if (configuration.GetValue("FeatureManagement:IsDynamicStoreEnabled", false)) + { + Configure(options => + { + options.SaveStaticFeaturesToDatabase = true; + options.IsDynamicFeatureStoreEnabled = true; + }); + } + } + + private void ConfigurePermissionManagement(IConfiguration configuration) + { + if (configuration.GetValue("PermissionManagement:IsDynamicStoreEnabled", false)) + { + Configure(options => + { + options.SaveStaticPermissionsToDatabase = true; + options.IsDynamicPermissionStoreEnabled = true; + }); + } + } + + private void ConfigureTextTemplatingManagement(IConfiguration configuration) + { + if (configuration.GetValue("TextTemplatingManagement:IsDynamicStoreEnabled", false)) + { + Configure(options => + { + options.SaveStaticTemplateDefinitionToDatabase = true; + options.IsDynamicTemplateDefinitionStoreEnabled = true; + }); + } + } + + private void ConfigureSettingManagement(IConfiguration configuration) + { + if (configuration.GetValue("SettingManagement:IsDynamicStoreEnabled", false)) + { + Configure(options => + { + options.SaveStaticSettingsToDatabase = true; + options.IsDynamicSettingStoreEnabled = true; + }); + } + } + private void ConfigureVirtualFileSystem() { Configure(options => @@ -294,10 +346,11 @@ public partial class ProjectNameHttpApiHostModule } }); options.OperationFilter(); + options.HideAbpEndpoints(); }); } - private void ConfigureLocalization() + private void ConfigureLocalization(IConfiguration configuration) { // 支持本地化语言类型 Configure(options => @@ -318,10 +371,13 @@ public partial class ProjectNameHttpApiHostModule options.UiCulturesMaps.Add(zhHansCultureMapInfo); }); - Configure(options => + if (configuration.GetValue("LocalizationManagement:IsDynamicStoreEnabled", false)) { - options.SaveStaticLocalizationsToDatabase = true; - }); + Configure(options => + { + options.SaveStaticLocalizationsToDatabase = true; + }); + } } private void ConfigureSecurity(IServiceCollection services, IConfiguration configuration, bool isDevelopment = false) @@ -333,9 +389,16 @@ public partial class ProjectNameHttpApiHostModule }); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddJwtBearer(options => + .AddAbpJwtBearer(options => { configuration.GetSection("AuthServer").Bind(options); + + var validIssuers = configuration.GetSection("AuthServer:ValidIssuers").Get>(); + if (validIssuers?.Count > 0) + { + options.TokenValidationParameters.ValidIssuers = validIssuers; + options.TokenValidationParameters.IssuerValidator = TokenWildcardIssuerValidator.IssuerValidator; + } }); if (!isDevelopment) @@ -352,7 +415,7 @@ public partial class ProjectNameHttpApiHostModule { services.AddCors(options => { - options.AddPolicy(DefaultCorsPolicyName, builder => + options.AddDefaultPolicy(builder => { builder .WithOrigins( diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs index 293632ca0..b8f3bf007 100644 --- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs +++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs @@ -1,6 +1,7 @@ using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; +using LINGYUN.Abp.Claims.Mapping; using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling.Emailing; @@ -44,20 +45,24 @@ namespace PackageName.CompanyName.ProjectName; typeof(AbpSerilogEnrichersUniqueIdModule), typeof(AbpAuditLoggingElasticsearchModule), typeof(AbpAspNetCoreSerilogModule), + typeof(ProjectNameApplicationModule), typeof(ProjectNameHttpApiModule), - typeof(ProjectNameEntityFrameworkCoreModule), typeof(ProjectNameSettingManagementModule), + typeof(ProjectNameDbMigratorEntityFrameworkCoreModule), + typeof(AbpEmailingExceptionHandlingModule), typeof(AbpCAPEventBusModule), typeof(AbpHttpClientIdentityModelWebModule), typeof(AbpAspNetCoreMultiTenancyModule), + typeof(AbpSaasEntityFrameworkCoreModule), typeof(AbpFeatureManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule), typeof(AbpSettingManagementEntityFrameworkCoreModule), typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpTextTemplatingEntityFrameworkCoreModule), + typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpCachingStackExchangeRedisModule), typeof(AbpDistributedLockingModule), @@ -69,6 +74,7 @@ namespace PackageName.CompanyName.ProjectName; #elif OpenTelemetry typeof(AbpTelemetryOpenTelemetryModule), #endif + typeof(AbpClaimsMappingModule), typeof(AbpExporterMiniExcelModule), typeof(AbpEmailingPlatformModule), typeof(AbpSmsPlatformModule), @@ -94,7 +100,6 @@ public partial class ProjectNameHttpApiHostModule : AbpModule ConfigureWrapper(); ConfigureMiniExcel(); - ConfigureLocalization(); ConfigureExceptionHandling(); ConfigureVirtualFileSystem(); ConfigureTiming(configuration); @@ -103,6 +108,13 @@ public partial class ProjectNameHttpApiHostModule : AbpModule ConfigureIdentity(configuration); ConfigureMultiTenancy(configuration); ConfigureJsonSerializer(configuration); + + ConfigureLocalization(configuration); + ConfigureFeatureManagement(configuration); + ConfigureSettingManagement(configuration); + ConfigurePermissionManagement(configuration); + ConfigureTextTemplatingManagement(configuration); + ConfigureSwagger(context.Services); ConfigureMvc(context.Services, configuration); ConfigureCors(context.Services, configuration); diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json index e287aa4a7..a4f781cb4 100644 --- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json @@ -143,6 +143,22 @@ "SwaggerClientId": "InternalServiceClient", "SwaggerClientSecret": "1q2w3E*" }, + + "FeatureManagement": { + "IsDynamicStoreEnabled": true + }, + "SettingManagement": { + "IsDynamicStoreEnabled": true + }, + "PermissionManagement": { + "IsDynamicStoreEnabled": true + }, + "LocalizationManagement": { + "IsDynamicStoreEnabled": true + }, + "TextTemplating": { + "IsDynamicStoreEnabled": true + }, "Logging": { "Serilog": { "Elasticsearch": { diff --git a/aspnet-core/templates/micro/content/migrations/migrations-database.ps1 b/aspnet-core/templates/micro/content/migrations/migrations-database.ps1 index 9c71f8963..3ae8f6d36 100644 --- a/aspnet-core/templates/micro/content/migrations/migrations-database.ps1 +++ b/aspnet-core/templates/micro/content/migrations/migrations-database.ps1 @@ -12,4 +12,6 @@ Set-Location ../PackageName.CompanyName.ProjectName.DbMigrator dotnet run +Set-Location ../ + Write-host "[ProjectName] - seed data successfuly completed." \ No newline at end of file