From 287d18e04693c503db91a140f0d1bf4b2858f9d9 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Tue, 28 Jun 2022 22:37:51 +0300 Subject: [PATCH 1/8] Fix #12999 --- .../src/lib/constants/validation.ts | 4 ++ .../src/lib/utils/validation-utils.ts | 41 +++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/constants/validation.ts b/npm/ng-packs/packages/theme-shared/src/lib/constants/validation.ts index 463a7b01dc..65b759a21e 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/constants/validation.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/constants/validation.ts @@ -13,4 +13,8 @@ export const DEFAULT_VALIDATION_BLUEPRINTS = { range: 'AbpValidation::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]', required: 'AbpValidation::ThisFieldIsRequired.', url: 'AbpValidation::ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl', + passwordRequiresLower: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresLower', + passwordRequiresUpper: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresUpper', + passwordRequiresDigit: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresDigit', + passwordRequiresNonAlphanumeric: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresNonAlphanumeric', }; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts index a9ec1d4270..b7d8d23376 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts @@ -1,7 +1,7 @@ import { ABP, ConfigStateService } from '@abp/ng.core'; import { Injector } from '@angular/core'; -import { ValidatorFn, Validators } from '@angular/forms'; -import { PasswordRules, validatePassword } from '@ngx-validate/core'; +import { AbstractControl, ValidatorFn, Validators } from '@angular/forms'; +import { PasswordRules, normalizeDiacritics } from '@ngx-validate/core'; const { minLength, maxLength } = Validators; @@ -31,7 +31,8 @@ export function getPasswordValidators(injector: Injector): ValidatorFn[] { requiredLength = +getRule('RequiredLength'); } - return [validatePassword(passwordRulesArr), minLength(requiredLength), maxLength(128)]; + const passwordValidators = passwordRulesArr.map(rule => validatePassword(rule)); + return [...passwordValidators, minLength(requiredLength), maxLength(128)]; } function getRuleFn(injector: Injector) { @@ -43,3 +44,37 @@ function getRuleFn(injector: Injector) { return (passwordRules[`Abp.Identity.Password.${key}`] || '').toLowerCase(); }; } +const errorMessageMap = { + small: 'passwordRequiresLower', + capital: 'passwordRequiresUpper', + number: 'passwordRequiresDigit', + special: 'passwordRequiresNonAlphanumeric', +}; + +function validatePassword(shouldContain: 'small' | 'capital' | 'number' | 'special'): ValidatorFn { + return (control: AbstractControl) => { + if (!control.value) return null; + + const value = normalizeDiacritics(control.value); + + const regexMap = { + small: /.*[a-z].*/, + capital: /.*[A-Z].*/, + number: /.*[0-9].*/, + special: /.*[^0-9a-zA-Z].*/, + }; + const regex = regexMap[shouldContain]; + + const hasError = regex[shouldContain].test(value); + + if (!hasError) { + return null; + } + + const error = errorMessageMap[shouldContain]; + + return { + [error]: true, + }; + }; +} From b2fdabfc98397bf9559ee2be3a7c4218d9468077 Mon Sep 17 00:00:00 2001 From: selman koc <64414348+skoc10@users.noreply.github.com> Date: Wed, 29 Jun 2022 09:53:58 +0300 Subject: [PATCH 2/8] Update common.props --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index c38f9d03e2..e372fe23a8 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 5.3.0 + 5.3.1 $(NoWarn);CS1591;CS0436 https://abp.io/assets/abp_nupkg.png https://abp.io/ From da0fe2246a76784cc9f94fdb5457327d24917077 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Wed, 29 Jun 2022 10:46:08 +0300 Subject: [PATCH 3/8] Update npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts Co-authored-by: Qingxiao Ren --- .../packages/theme-shared/src/lib/utils/validation-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts index b7d8d23376..eb9d21c192 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts @@ -65,7 +65,7 @@ function validatePassword(shouldContain: 'small' | 'capital' | 'number' | 'speci }; const regex = regexMap[shouldContain]; - const hasError = regex[shouldContain].test(value); + const hasError = regex.test(value); if (!hasError) { return null; From 2b28c0f44f38d53d13fc45217ef1dfea33667133 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Wed, 29 Jun 2022 10:53:44 +0300 Subject: [PATCH 4/8] Revert if condition validatePassword func on validation-utils.ts --- .../packages/theme-shared/src/lib/utils/validation-utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts index eb9d21c192..0d0faf4211 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts @@ -65,9 +65,9 @@ function validatePassword(shouldContain: 'small' | 'capital' | 'number' | 'speci }; const regex = regexMap[shouldContain]; - const hasError = regex.test(value); + const isValid = regex.test(value); - if (!hasError) { + if (isValid) { return null; } From adcb457f8f9348af54ffed325e0513d036091e60 Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Wed, 29 Jun 2022 10:59:45 +0300 Subject: [PATCH 5/8] update tests --- .../packages/theme-shared/src/lib/models/index.ts | 1 + .../packages/theme-shared/src/lib/models/validation.ts | 1 + .../src/lib/tests/validation-utils.spec.ts | 10 +++++++--- .../theme-shared/src/lib/utils/validation-utils.ts | 7 +++++-- 4 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 npm/ng-packs/packages/theme-shared/src/lib/models/validation.ts diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts index ca6aa74124..4cb240e9ab 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts @@ -4,3 +4,4 @@ export * from './nav-item'; export * from './statistics'; export * from './toaster'; export * from './user-menu'; +export * from './validation'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/validation.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/validation.ts new file mode 100644 index 0000000000..bcc53a34e7 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/validation.ts @@ -0,0 +1 @@ +export type PasswordRule = 'small' | 'capital' | 'number' | 'special'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts index fe7577477c..435afb76e6 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts @@ -4,10 +4,11 @@ import { HttpClient } from '@angular/common/http'; import { Component, Injector } from '@angular/core'; import { Validators } from '@angular/forms'; import { createComponentFactory, Spectator } from '@ngneat/spectator/jest'; -import { validatePassword } from '@ngx-validate/core'; import { OAuthService } from 'angular-oauth2-oidc'; import { of } from 'rxjs'; -import { getPasswordValidators } from '../utils'; +import { getPasswordValidators, validatePassword } from '../utils'; +import { PasswordRule } from '../models/validation'; + @Component({ template: '', selector: 'abp-dummy' }) class DummyComponent {} @@ -47,8 +48,11 @@ describe('ValidationUtils', () => { configState.refreshAppState(); const validators = getPasswordValidators(spectator.inject(Injector)); + const passwordValidators = ['number', 'small', 'capital', 'special'].map( + (rule: PasswordRule) => validatePassword(rule), + ); const expectedValidators = [ - validatePassword(['number', 'small', 'capital', 'special']), + ...passwordValidators, Validators.minLength(6), Validators.maxLength(128), ]; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts index b7d8d23376..4d3f4a1f15 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts @@ -1,7 +1,8 @@ import { ABP, ConfigStateService } from '@abp/ng.core'; import { Injector } from '@angular/core'; import { AbstractControl, ValidatorFn, Validators } from '@angular/forms'; -import { PasswordRules, normalizeDiacritics } from '@ngx-validate/core'; +import { normalizeDiacritics, PasswordRules } from '@ngx-validate/core'; +import { PasswordRule } from "../models/validation"; const { minLength, maxLength } = Validators; @@ -51,7 +52,9 @@ const errorMessageMap = { special: 'passwordRequiresNonAlphanumeric', }; -function validatePassword(shouldContain: 'small' | 'capital' | 'number' | 'special'): ValidatorFn { +export function validatePassword( + shouldContain: PasswordRule +): ValidatorFn { return (control: AbstractControl) => { if (!control.value) return null; From 8ee18d6b449b2e3879eabe22295b2900be876cf5 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 29 Jun 2022 11:05:58 +0300 Subject: [PATCH 6/8] Fix: Cli fails to copy angular files when adding new module resolves volosoft/volo#10857 --- .../AngularSourceCodeAdder.cs | 13 ++++++++- .../SolutionModuleAdder.cs | 29 ------------------- 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularSourceCodeAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularSourceCodeAdder.cs index 9847a2b7a5..84e995f1fd 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularSourceCodeAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularSourceCodeAdder.cs @@ -246,6 +246,17 @@ public class AngularSourceCodeAdder : ITransientDependency foreach (var folder in angularPathsInDownloadedSourceCode) { + var nodeModulesFolder = Path.Combine(folder, "node_modules"); + var vscodeFolder = Path.Combine(folder, ".vscode"); + if (Directory.Exists(nodeModulesFolder)) + { + Directory.Delete(nodeModulesFolder, true); + } + if (Directory.Exists(vscodeFolder)) + { + Directory.Delete(vscodeFolder, true); + } + var projectsInFolder = Directory.GetDirectories(folder); if (projectsInFolder.Length == 1 && Path.GetFileName(projectsInFolder[0]) == "projects") @@ -286,7 +297,7 @@ public class AngularSourceCodeAdder : ITransientDependency Directory.Move(projectInFolder, destDirName); } - if (!Directory.GetFiles(folder).Any() && !Directory.GetDirectories(folder).Any()) + if (!Directory.GetDirectories(folder).Any()) { Directory.Delete(folder, true); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index 2bfcad2d32..f418d8b490 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -427,11 +427,6 @@ public class SolutionModuleAdder : ITransientDependency await PublishEventAsync(9, $"Adding angular source code"); - if (newTemplate) - { - MoveAngularFolderInNewTemplate(modulesFolderInSolution, moduleName); - } - await AngularSourceCodeAdder.AddFromModuleAsync(solutionFilePath, angularPath); } @@ -449,30 +444,6 @@ public class SolutionModuleAdder : ITransientDependency } } - private static void MoveAngularFolderInNewTemplate(string modulesFolderInSolution, string moduleName) - { - var moduleAngularFolder = Path.Combine(modulesFolderInSolution, moduleName, "angular"); - - if (!Directory.Exists(moduleAngularFolder)) - { - return; - } - - var files = Directory.GetFiles(moduleAngularFolder); - var folders = Directory.GetDirectories(moduleAngularFolder); - - Directory.CreateDirectory(Path.Combine(moduleAngularFolder, moduleName)); - - foreach (var file in files) - { - File.Move(file, Path.Combine(moduleAngularFolder, moduleName, Path.GetFileName(file))); - } - foreach (var folder in folders) - { - Directory.Move(folder, Path.Combine(moduleAngularFolder, moduleName, Path.GetFileName(folder))); - } - } - private async Task DownloadSourceCodesToSolutionFolder(ModuleWithMastersInfo module, string modulesFolderInSolution, string version = null, bool newTemplate = false, bool newProTemplate = false) From 6fd38cde9277b537fea873a7954da78749e7d1e8 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 29 Jun 2022 16:07:06 +0800 Subject: [PATCH 7/8] Forward Identity authentication for `Bearer`. --- ...bpAspNetCoreServiceCollectionExtensions.cs | 26 +++++++++++++++++++ .../MyProjectNameModule.cs | 5 +++- .../MyProjectNameModule.cs | 5 +++- .../MyProjectNameModule.cs | 5 +++- .../MyProjectNameModule.cs | 5 +++- .../MyProjectNameModule.cs | 7 +++-- .../MyProjectNameModule.cs | 7 +++-- .../MyProjectNameBlazorModule.cs | 3 +++ .../MyProjectNameHttpApiHostModule.cs | 3 +++ .../MyProjectNameWebModule.cs | 3 +++ .../MyProjectNameBlazorHostModule.cs | 3 +++ .../MyProjectNameIdentityServerModule.cs | 3 +++ 12 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs diff --git a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs new file mode 100644 index 0000000000..de491eb7a2 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs @@ -0,0 +1,26 @@ +using System; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Extensions.DependencyInjection; + +public static class AbpAspNetCoreServiceCollectionExtensions +{ + public static IServiceCollection ForwardIdentityAuthenticationForBearer(this IServiceCollection services, string targetAuthenticationScheme = "Bearer") + { + services.ConfigureApplicationCookie(options => + { + options.ForwardDefaultSelector = ctx => + { + string authorization = ctx.Request.Headers.Authorization; + if (!authorization.IsNullOrWhiteSpace() && authorization.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase)) + { + return targetAuthenticationScheme; + } + + return null; + }; + }); + + return services; + } +} diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs index 0a173f00b9..b9b468e397 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs @@ -1,5 +1,6 @@ using Blazorise.Bootstrap5; using Blazorise.Icons.FontAwesome; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.OpenApi.Models; using MyCompanyName.MyProjectName.Data; @@ -129,7 +130,7 @@ public class MyProjectNameModule : AbpModule { context.Services.Replace(ServiceDescriptor.Singleton()); } - + ConfigureUrls(configuration); ConfigureBundles(); ConfigureAutoMapper(context); @@ -188,6 +189,8 @@ public class MyProjectNameModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; }); + + context.Services.ForwardIdentityAuthenticationForBearer(); } private void ConfigureLocalizationServices() diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs index f5ad689be7..1a3e0a1c67 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs @@ -1,5 +1,6 @@ using Blazorise.Bootstrap5; using Blazorise.Icons.FontAwesome; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.OpenApi.Models; using MyCompanyName.MyProjectName.Data; @@ -125,7 +126,7 @@ public class MyProjectNameModule : AbpModule { var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); - + if (hostingEnvironment.IsDevelopment()) { context.Services.Replace(ServiceDescriptor.Singleton()); @@ -189,6 +190,8 @@ public class MyProjectNameModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; }); + + context.Services.ForwardIdentityAuthenticationForBearer(); } private void ConfigureLocalizationServices() 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 4550b6d997..4913fc441e 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 @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.OpenApi.Models; using MyCompanyName.MyProjectName.Data; @@ -112,7 +113,7 @@ public class MyProjectNameModule : AbpModule { var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); - + if (hostingEnvironment.IsDevelopment()) { context.Services.Replace(ServiceDescriptor.Singleton()); @@ -172,6 +173,8 @@ public class MyProjectNameModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; }); + + services.ForwardIdentityAuthenticationForBearer(); } private void ConfigureLocalization() 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 c5cf3e4d79..b062de6a79 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.OpenApi.Models; using MyCompanyName.MyProjectName.Data; @@ -114,7 +115,7 @@ public class MyProjectNameModule : AbpModule { var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); - + if (hostingEnvironment.IsDevelopment()) { context.Services.Replace(ServiceDescriptor.Singleton()); @@ -174,6 +175,8 @@ public class MyProjectNameModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; }); + + services.ForwardIdentityAuthenticationForBearer(); } private void ConfigureLocalization() diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs index a6379697d5..f6ab66aa61 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.AspNetCore.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.OpenApi.Models; using MyCompanyName.MyProjectName.Data; using MyCompanyName.MyProjectName.Localization; @@ -118,7 +119,7 @@ public class MyProjectNameModule : AbpModule { var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); - + if (hostingEnvironment.IsDevelopment()) { context.Services.Replace(ServiceDescriptor.Singleton()); @@ -176,6 +177,8 @@ public class MyProjectNameModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; }); + + services.ForwardIdentityAuthenticationForBearer(); } private void ConfigureLocalization() diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs index 90e602c336..ec73113cce 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.AspNetCore.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.OpenApi.Models; using MyCompanyName.MyProjectName.Data; using MyCompanyName.MyProjectName.Localization; @@ -119,7 +120,7 @@ public class MyProjectNameModule : AbpModule { var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); - + if (hostingEnvironment.IsDevelopment()) { context.Services.Replace(ServiceDescriptor.Singleton()); @@ -178,6 +179,8 @@ public class MyProjectNameModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; }); + + services.ForwardIdentityAuthenticationForBearer(); } private void ConfigureLocalization() diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs index 39c3601722..d8c3be6007 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs @@ -4,6 +4,7 @@ using System.Net.Http; using Blazorise.Bootstrap5; using Blazorise.Icons.FontAwesome; using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -138,6 +139,8 @@ public class MyProjectNameBlazorModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; }); + + context.Services.ForwardIdentityAuthenticationForBearer(); } private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 586507bbc4..40e4614ec0 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Net.Http; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -129,6 +130,8 @@ public class MyProjectNameHttpApiHostModule : AbpModule HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }; }); + + context.Services.ForwardIdentityAuthenticationForBearer(); } private static void ConfigureSwaggerServices(ServiceConfigurationContext context, IConfiguration configuration) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index b6daf2a4a8..ea906774fc 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -1,6 +1,7 @@ using System; using System.IO; using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -118,6 +119,8 @@ public class MyProjectNameWebModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; }); + + context.Services.ForwardIdentityAuthenticationForBearer(); } private void ConfigureAutoMapper() diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs index cb44a1a683..96e10ea7aa 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using Blazorise.Bootstrap5; using Blazorise.Icons.FontAwesome; using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; @@ -142,6 +143,8 @@ public class MyProjectNameBlazorHostModule : AbpModule options.Audience = "MyProjectName"; }); + context.Services.ForwardIdentityAuthenticationForBearer(); + if (hostingEnvironment.IsDevelopment()) { Configure(options => 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 eb854d3bc1..da127f4279 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Extensions.DependencyInjection; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -147,6 +148,8 @@ public class MyProjectNameIdentityServerModule : AbpModule options.Audience = configuration["AuthServer:ApiName"]; }); + context.Services.ForwardIdentityAuthenticationForBearer(); + Configure(options => { options.KeyPrefix = "MyProjectName:"; From 481d031c3eb33a635a381d4ab12254353e710bb7 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 29 Jun 2022 16:20:27 +0800 Subject: [PATCH 8/8] Update AbpAspNetCoreServiceCollectionExtensions.cs --- .../AbpAspNetCoreServiceCollectionExtensions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs index de491eb7a2..8d26a17835 100644 --- a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs +++ b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Microsoft/AspNetCore/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs @@ -5,7 +5,7 @@ namespace Microsoft.AspNetCore.Extensions.DependencyInjection; public static class AbpAspNetCoreServiceCollectionExtensions { - public static IServiceCollection ForwardIdentityAuthenticationForBearer(this IServiceCollection services, string targetAuthenticationScheme = "Bearer") + public static IServiceCollection ForwardIdentityAuthenticationForBearer(this IServiceCollection services, string jwtBearerScheme = "Bearer") { services.ConfigureApplicationCookie(options => { @@ -14,7 +14,7 @@ public static class AbpAspNetCoreServiceCollectionExtensions string authorization = ctx.Request.Headers.Authorization; if (!authorization.IsNullOrWhiteSpace() && authorization.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase)) { - return targetAuthenticationScheme; + return jwtBearerScheme; } return null;