From 651815c282bfc594762346f4445afd9e6b48bb1e Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Mon, 25 Jul 2016 16:31:27 -0700 Subject: [PATCH] Remove OfType allocations (#906) --- .../AuthorizationPolicy.cs | 12 ++++++------ .../DefaultAuthorizationPolicyProvider.cs | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.AspNetCore.Authorization/AuthorizationPolicy.cs b/src/Microsoft.AspNetCore.Authorization/AuthorizationPolicy.cs index 3fe0cdd070..5cba0fd9e3 100644 --- a/src/Microsoft.AspNetCore.Authorization/AuthorizationPolicy.cs +++ b/src/Microsoft.AspNetCore.Authorization/AuthorizationPolicy.cs @@ -122,28 +122,28 @@ namespace Microsoft.AspNetCore.Authorization var policyBuilder = new AuthorizationPolicyBuilder(); var any = false; - foreach (var authorizeAttribute in authorizeData.OfType()) + foreach (var authorizeDatum in authorizeData) { any = true; var useDefaultPolicy = true; - if (!string.IsNullOrWhiteSpace(authorizeAttribute.Policy)) + if (!string.IsNullOrWhiteSpace(authorizeDatum.Policy)) { - var policy = await policyProvider.GetPolicyAsync(authorizeAttribute.Policy); + var policy = await policyProvider.GetPolicyAsync(authorizeDatum.Policy); if (policy == null) { - throw new InvalidOperationException(Resources.FormatException_AuthorizationPolicyNotFound(authorizeAttribute.Policy)); + throw new InvalidOperationException(Resources.FormatException_AuthorizationPolicyNotFound(authorizeDatum.Policy)); } policyBuilder.Combine(policy); useDefaultPolicy = false; } - var rolesSplit = authorizeAttribute.Roles?.Split(','); + var rolesSplit = authorizeDatum.Roles?.Split(','); if (rolesSplit != null && rolesSplit.Any()) { var trimmedRolesSplit = rolesSplit.Where(r => !string.IsNullOrWhiteSpace(r)).Select(r => r.Trim()); policyBuilder.RequireRole(trimmedRolesSplit); useDefaultPolicy = false; } - var authTypesSplit = authorizeAttribute.ActiveAuthenticationSchemes?.Split(','); + var authTypesSplit = authorizeDatum.ActiveAuthenticationSchemes?.Split(','); if (authTypesSplit != null && authTypesSplit.Any()) { foreach (var authType in authTypesSplit) diff --git a/src/Microsoft.AspNetCore.Authorization/DefaultAuthorizationPolicyProvider.cs b/src/Microsoft.AspNetCore.Authorization/DefaultAuthorizationPolicyProvider.cs index 2c9ea19b5c..6fb8bd68dc 100644 --- a/src/Microsoft.AspNetCore.Authorization/DefaultAuthorizationPolicyProvider.cs +++ b/src/Microsoft.AspNetCore.Authorization/DefaultAuthorizationPolicyProvider.cs @@ -45,6 +45,7 @@ namespace Microsoft.AspNetCore.Authorization /// The named . public virtual Task GetPolicyAsync(string policyName) { + // MVC relies on DefaultAuthorizationPolicyProvider providing the same policy for the same requests. return Task.FromResult(_options.GetPolicy(policyName)); } }