Abhängigkeitsinjektion in Anforderungshandlern in ASP.NET Core
Autorisierungshandler müssen während der Konfiguration mithilfe von Dependency Injection in der Dienstsammlung registriert werden.
Angenommen, Sie möchten Regeln in einem Repository, das in der Dienstsammlung registriert wurde, in einem Autorisierungshandler auswerten. Die Autorisierung löst dies auf und fügt es in den Konstruktor ein.
Um beispielsweise die .NET-Protokollierungsinfrastruktur zu verwenden, fügen Sie ILoggerFactory in den Handler ein, wie im folgenden Beispiel gezeigt:
public class SampleAuthorizationHandler : AuthorizationHandler<SampleRequirement>
{
private readonly ILogger _logger;
public SampleAuthorizationHandler(ILoggerFactory loggerFactory)
=> _logger = loggerFactory.CreateLogger(GetType().FullName);
protected override Task HandleRequirementAsync(
AuthorizationHandlerContext context, SampleRequirement requirement)
{
_logger.LogInformation("Inside my handler");
// ...
return Task.CompletedTask;
}
}
Der vorstehende Handler kann mit einer beliebigen Dienstlebensdauer registriert werden. Im folgenden Code wird AddSingleton zum Registrieren des vorstehenden Handlers verwendet:
builder.Services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();
Eine Instanz des Handlers wird beim Starten der App erstellt, und DI fügt die registrierte ILoggerFactory
in den Konstruktor ein.
Hinweis
Registrieren Sie keine Autorisierungshandler, die Entity Framework (EF) als Singletons verwenden.
Autorisierungshandler müssen während der Konfiguration mithilfe von Dependency Injection in der Dienstsammlung registriert werden.
Angenommen, Sie möchten Regeln in einem Repository, das in der Dienstsammlung registriert wurde, in einem Autorisierungshandler auswerten. Die Autorisierung löst dies auf und fügt es in den Konstruktor ein.
Um beispielsweise die .NET-Protokollierungsinfrastruktur zu verwenden, fügen Sie ILoggerFactory in den Handler ein, wie im folgenden Beispiel gezeigt:
public class SampleAuthorizationHandler : AuthorizationHandler<SampleRequirement>
{
private readonly ILogger _logger;
public SampleAuthorizationHandler(ILoggerFactory loggerFactory)
=> _logger = loggerFactory.CreateLogger(GetType().FullName);
protected override Task HandleRequirementAsync(
AuthorizationHandlerContext context, SampleRequirement requirement)
{
_logger.LogInformation("Inside my handler");
// ...
return Task.CompletedTask;
}
}
Der vorstehende Handler kann mit einer beliebigen Dienstlebensdauer registriert werden. Im folgenden Code wird AddSingleton zum Registrieren des vorstehenden Handlers verwendet:
services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();
Eine Instanz des Handlers wird beim Starten der App erstellt, und DI fügt die registrierte ILoggerFactory
in den Konstruktor ein.
Hinweis
Registrieren Sie keine Autorisierungshandler, die Entity Framework (EF) als Singletons verwenden.
ASP.NET Core
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für