From 5db89514e8dccb38de7ef47bcb1598f370a67bc9 Mon Sep 17 00:00:00 2001 From: Hans Bakker Date: Wed, 1 Jul 2020 02:06:00 +0200 Subject: [PATCH] Allow extensibility of DefaultAuthorizationService (#23143) * Allow extensibility of DefaultAuthorizationService When only a small behavior change of the `DefaultAuthorizationService` is wanted, it would be nice if you could override its methods and building upon them rather than having a copy-paste of the class in your codebase. Inside the `override` methods in your inherited class you could call the `base` method to reuse parts of its logic. Please refer to https://github.com/dotnet/aspnetcore/issues/23094 for the usecase. * updated ref assembly --- .../Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs | 4 ++-- .../ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs | 4 ++-- .../Authorization/Core/src/DefaultAuthorizationService.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs index febefde6c8..4a9a1de687 100644 --- a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs +++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netcoreapp.cs @@ -133,9 +133,9 @@ namespace Microsoft.AspNetCore.Authorization { public DefaultAuthorizationService(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider handlers, Microsoft.Extensions.Logging.ILogger logger, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory contextFactory, Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator evaluator, Microsoft.Extensions.Options.IOptions options) { } [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, System.Collections.Generic.IEnumerable requirements) { throw null; } + public virtual System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, System.Collections.Generic.IEnumerable requirements) { throw null; } [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, string policyName) { throw null; } + public virtual System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, string policyName) { throw null; } } public partial interface IAuthorizationEvaluator { diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs index febefde6c8..4a9a1de687 100644 --- a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs +++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.netstandard2.0.cs @@ -133,9 +133,9 @@ namespace Microsoft.AspNetCore.Authorization { public DefaultAuthorizationService(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider policyProvider, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider handlers, Microsoft.Extensions.Logging.ILogger logger, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory contextFactory, Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator evaluator, Microsoft.Extensions.Options.IOptions options) { } [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, System.Collections.Generic.IEnumerable requirements) { throw null; } + public virtual System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, System.Collections.Generic.IEnumerable requirements) { throw null; } [System.Diagnostics.DebuggerStepThroughAttribute] - public System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, string policyName) { throw null; } + public virtual System.Threading.Tasks.Task AuthorizeAsync(System.Security.Claims.ClaimsPrincipal user, object? resource, string policyName) { throw null; } } public partial interface IAuthorizationEvaluator { diff --git a/src/Security/Authorization/Core/src/DefaultAuthorizationService.cs b/src/Security/Authorization/Core/src/DefaultAuthorizationService.cs index e8f63a2d06..1dbcb3ed37 100644 --- a/src/Security/Authorization/Core/src/DefaultAuthorizationService.cs +++ b/src/Security/Authorization/Core/src/DefaultAuthorizationService.cs @@ -77,7 +77,7 @@ namespace Microsoft.AspNetCore.Authorization /// A flag indicating whether authorization has succeeded. /// This value is true when the user fulfills the policy otherwise false. /// - public async Task AuthorizeAsync(ClaimsPrincipal user, object? resource, IEnumerable requirements) + public virtual async Task AuthorizeAsync(ClaimsPrincipal user, object? resource, IEnumerable requirements) { if (requirements == null) { @@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Authorization /// A flag indicating whether authorization has succeeded. /// This value is true when the user fulfills the policy otherwise false. /// - public async Task AuthorizeAsync(ClaimsPrincipal user, object? resource, string policyName) + public virtual async Task AuthorizeAsync(ClaimsPrincipal user, object? resource, string policyName) { if (policyName == null) {