Remove OfType allocations (#906)
This commit is contained in:
parent
7235007a9f
commit
651815c282
|
|
@ -122,28 +122,28 @@ namespace Microsoft.AspNetCore.Authorization
|
||||||
|
|
||||||
var policyBuilder = new AuthorizationPolicyBuilder();
|
var policyBuilder = new AuthorizationPolicyBuilder();
|
||||||
var any = false;
|
var any = false;
|
||||||
foreach (var authorizeAttribute in authorizeData.OfType<AuthorizeAttribute>())
|
foreach (var authorizeDatum in authorizeData)
|
||||||
{
|
{
|
||||||
any = true;
|
any = true;
|
||||||
var useDefaultPolicy = 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)
|
if (policy == null)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException(Resources.FormatException_AuthorizationPolicyNotFound(authorizeAttribute.Policy));
|
throw new InvalidOperationException(Resources.FormatException_AuthorizationPolicyNotFound(authorizeDatum.Policy));
|
||||||
}
|
}
|
||||||
policyBuilder.Combine(policy);
|
policyBuilder.Combine(policy);
|
||||||
useDefaultPolicy = false;
|
useDefaultPolicy = false;
|
||||||
}
|
}
|
||||||
var rolesSplit = authorizeAttribute.Roles?.Split(',');
|
var rolesSplit = authorizeDatum.Roles?.Split(',');
|
||||||
if (rolesSplit != null && rolesSplit.Any())
|
if (rolesSplit != null && rolesSplit.Any())
|
||||||
{
|
{
|
||||||
var trimmedRolesSplit = rolesSplit.Where(r => !string.IsNullOrWhiteSpace(r)).Select(r => r.Trim());
|
var trimmedRolesSplit = rolesSplit.Where(r => !string.IsNullOrWhiteSpace(r)).Select(r => r.Trim());
|
||||||
policyBuilder.RequireRole(trimmedRolesSplit);
|
policyBuilder.RequireRole(trimmedRolesSplit);
|
||||||
useDefaultPolicy = false;
|
useDefaultPolicy = false;
|
||||||
}
|
}
|
||||||
var authTypesSplit = authorizeAttribute.ActiveAuthenticationSchemes?.Split(',');
|
var authTypesSplit = authorizeDatum.ActiveAuthenticationSchemes?.Split(',');
|
||||||
if (authTypesSplit != null && authTypesSplit.Any())
|
if (authTypesSplit != null && authTypesSplit.Any())
|
||||||
{
|
{
|
||||||
foreach (var authType in authTypesSplit)
|
foreach (var authType in authTypesSplit)
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ namespace Microsoft.AspNetCore.Authorization
|
||||||
/// <returns>The named <see cref="AuthorizationPolicy"/>.</returns>
|
/// <returns>The named <see cref="AuthorizationPolicy"/>.</returns>
|
||||||
public virtual Task<AuthorizationPolicy> GetPolicyAsync(string policyName)
|
public virtual Task<AuthorizationPolicy> GetPolicyAsync(string policyName)
|
||||||
{
|
{
|
||||||
|
// MVC relies on DefaultAuthorizationPolicyProvider providing the same policy for the same requests.
|
||||||
return Task.FromResult(_options.GetPolicy(policyName));
|
return Task.FromResult(_options.GetPolicy(policyName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue