| File: AuthorizationMiddlewareResultHandler.cs | Web Access |
| Project: src\aspnetcore\src\Security\Authorization\Policy\src\Microsoft.AspNetCore.Authorization.Policy.csproj (Microsoft.AspNetCore.Authorization.Policy) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.Authorization.Policy; /// <summary> /// Default implementation for <see cref="IAuthorizationMiddlewareResultHandler"/>. /// </summary> public class AuthorizationMiddlewareResultHandler : IAuthorizationMiddlewareResultHandler { /// <inheritdoc /> public Task HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult) { if (authorizeResult.Succeeded) { return next(context); } return Handle(); async Task Handle() { if (authorizeResult.Challenged) { if (policy.AuthenticationSchemes.Count > 0) { foreach (var scheme in policy.AuthenticationSchemes) { await context.ChallengeAsync(scheme); } } else { await context.ChallengeAsync(); } } else if (authorizeResult.Forbidden) { if (policy.AuthenticationSchemes.Count > 0) { foreach (var scheme in policy.AuthenticationSchemes) { await context.ForbidAsync(scheme); } } else { await context.ForbidAsync(); } } } } }