Wstrzykiwanie zależności w programach obsługi wymagań w programie ASP.NET Core

Procedury obsługi autoryzacji muszą być zarejestrowane w kolekcji usług podczas konfigurowania przy użyciu wstrzykiwania zależności.

Załóżmy, że masz repozytorium reguł, które chcesz ocenić w programie obsługi autoryzacji i że repozytorium zostało zarejestrowane w kolekcji usług. Autoryzacja rozpoznaje i wprowadza to do konstruktora.

Aby na przykład użyć infrastruktury rejestrowania platformy .NET, wstrzyknąć ILoggerFactory do programu obsługi, jak pokazano w poniższym przykładzie:

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;
    }
}

Poprzedni program obsługi można zarejestrować w dowolnym okresie istnienia usługi. Poniższy kod używa AddSingleton metody do zarejestrowania poprzedniej procedury obsługi:

builder.Services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();

Wystąpienie programu obsługi jest tworzone podczas uruchamiania aplikacji, a di wprowadza zarejestrowane ILoggerFactory do jego konstruktora.

Uwaga

Nie rejestruj procedur obsługi autoryzacji korzystających z programu Entity Framework (EF) jako pojedynczych dysków.

Procedury obsługi autoryzacji muszą być zarejestrowane w kolekcji usług podczas konfigurowania przy użyciu wstrzykiwania zależności.

Załóżmy, że masz repozytorium reguł, które chcesz ocenić w programie obsługi autoryzacji i że repozytorium zostało zarejestrowane w kolekcji usług. Autoryzacja rozpoznaje i wprowadza to do konstruktora.

Aby na przykład użyć infrastruktury rejestrowania platformy .NET, wstrzyknąć ILoggerFactory do programu obsługi, jak pokazano w poniższym przykładzie:

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;
    }
}

Poprzedni program obsługi można zarejestrować w dowolnym okresie istnienia usługi. Poniższy kod używa AddSingleton metody do zarejestrowania poprzedniej procedury obsługi:

services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();

Wystąpienie programu obsługi jest tworzone podczas uruchamiania aplikacji, a di wprowadza zarejestrowane ILoggerFactory do jego konstruktora.

Uwaga

Nie rejestruj procedur obsługi autoryzacji korzystających z programu Entity Framework (EF) jako pojedynczych dysków.