Внедрение зависимостей в обработчики требований в ASP.NET Core
Обработчики авторизации должны быть зарегистрированы в коллекции служб во время настройки с помощью внедрения зависимостей.
Предположим, у вас есть репозиторий правил, которые вы хотите оценить внутри обработчика авторизации, и этот репозиторий был зарегистрирован в коллекции служб. Авторизация разрешает и внедряет его в конструктор.
Например, чтобы использовать инфраструктуру ведения журнала .NET, вставить ILoggerFactory в обработчик, как показано в следующем примере:
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;
}
}
Предыдущий обработчик можно зарегистрировать с любым временем существования службы. Следующий код используется AddSingleton для регистрации предыдущего обработчика:
builder.Services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();
Экземпляр обработчика создается при запуске приложения, и di внедряет зарегистрированный ILoggerFactory
в его конструктор.
Примечание.
Не регистрируйте обработчики авторизации, использующие Entity Framework (EF) в качестве одноэлементных элементов.
Обработчики авторизации должны быть зарегистрированы в коллекции служб во время настройки с помощью внедрения зависимостей.
Предположим, у вас есть репозиторий правил, которые вы хотите оценить внутри обработчика авторизации, и этот репозиторий был зарегистрирован в коллекции служб. Авторизация разрешает и внедряет его в конструктор.
Например, чтобы использовать инфраструктуру ведения журнала .NET, вставить ILoggerFactory в обработчик, как показано в следующем примере:
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;
}
}
Предыдущий обработчик можно зарегистрировать с любым временем существования службы. Следующий код используется AddSingleton для регистрации предыдущего обработчика:
services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();
Экземпляр обработчика создается при запуске приложения, и di внедряет зарегистрированный ILoggerFactory
в его конструктор.
Примечание.
Не регистрируйте обработчики авторизации, использующие Entity Framework (EF) в качестве одноэлементных элементов.
ASP.NET Core