Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulamalar, AuthorizationMiddleware tarafından yetkilendirme sonuçlarının nasıl işleneceğini özelleştirmek için bir IAuthorizationMiddlewareResultHandler kaydedebilir. Uygulamalar şu şekilde kullanılabilir IAuthorizationMiddlewareResultHandler :
- Özelleştirilmiş yanıtlar döndür.
- Varsayılan meydan okumayı geliştirin veya yanıtları yasaklayın.
Aşağıdaki kod, belirli yetkilendirme hataları için özel bir yanıt döndüren örnek bir uygulamasını IAuthorizationMiddlewareResultHandler gösterir:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization.Policy;
public class SampleAuthorizationMiddlewareResultHandler : IAuthorizationMiddlewareResultHandler
{
private readonly AuthorizationMiddlewareResultHandler defaultHandler = new();
public async Task HandleAsync(
RequestDelegate next,
HttpContext context,
AuthorizationPolicy policy,
PolicyAuthorizationResult authorizeResult)
{
// If the authorization was forbidden and the resource had a specific requirement,
// provide a custom 404 response.
if (authorizeResult.Forbidden
&& authorizeResult.AuthorizationFailure!.FailedRequirements
.OfType<Show404Requirement>().Any())
{
// Return a 404 to make it appear as if the resource doesn't exist.
context.Response.StatusCode = StatusCodes.Status404NotFound;
return;
}
// Fall back to the default implementation.
await defaultHandler.HandleAsync(next, context, policy, authorizeResult);
}
}
public class Show404Requirement : IAuthorizationRequirement { }
Bu uygulamayı IAuthorizationMiddlewareResultHandler içinde Program.cs kaydedin.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<
IAuthorizationMiddlewareResultHandler, SampleAuthorizationMiddlewareResultHandler>();
var app = builder.Build();
Uygulamalar yetkilendirme sonuçlarının nasıl IAuthorizationMiddlewareResultHandler işleneceğini özelleştirmek için bir AuthorizationMiddleware kaydedebilir. Uygulamalar aşağıdakileri yapmak için kullanabilir IAuthorizationMiddlewareResultHandler :
- Özelleştirilmiş yanıtlar döndür.
- Varsayılan görevi geliştirin veya yanıtları yasaklayın.
Aşağıdaki kod, belirli yetkilendirme hataları için özel bir yanıt döndüren örnek bir uygulamasını IAuthorizationMiddlewareResultHandler gösterir:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization.Policy;
using Microsoft.AspNetCore.Http;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
public class MyAuthorizationMiddlewareResultHandler : IAuthorizationMiddlewareResultHandler
{
private readonly AuthorizationMiddlewareResultHandler
DefaultHandler = new AuthorizationMiddlewareResultHandler();
public async Task HandleAsync(
RequestDelegate requestDelegate,
HttpContext httpContext,
AuthorizationPolicy authorizationPolicy,
PolicyAuthorizationResult policyAuthorizationResult)
{
// if the authorization was forbidden and the resource had specific requirements,
// provide a custom response.
if (Show404ForForbiddenResult(policyAuthorizationResult))
{
// Return a 404 to make it appear as if the resource does not exist.
httpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
return;
}
// Fallback to the default implementation.
await DefaultHandler.HandleAsync(requestDelegate, httpContext, authorizationPolicy,
policyAuthorizationResult);
}
bool Show404ForForbiddenResult(PolicyAuthorizationResult policyAuthorizationResult)
{
return policyAuthorizationResult.Forbidden &&
policyAuthorizationResult.AuthorizationFailure.FailedRequirements.OfType<
Show404Requirement>().Any();
}
}
public class Show404Requirement : IAuthorizationRequirement { }
'a kaydolun MyAuthorizationMiddlewareResultHandlerStartup.ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddSingleton<IAuthorizationMiddlewareResultHandler,
MyAuthorizationMiddlewareResultHandler>();
}
ASP.NET Core