ASP.NET Core'da gereksinim işleyicilerine bağımlılık ekleme

Bağımlılık ekleme kullanılarak yapılandırma sırasında yetkilendirme işleyicilerinin hizmet koleksiyonuna kaydedilmesi gerekir.

Yetkilendirme işleyicisi içinde değerlendirmek istediğiniz bir kural deposuna sahip olduğunuzu ve bu deponun hizmet koleksiyonuna kaydedildiğini varsayalım. Yetkilendirme bunu çözer ve oluşturucuya ekler.

Örneğin, .NET günlük altyapısını kullanmak için, aşağıdaki örnekte gösterildiği gibi işleyiciye ekleyin 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;
    }
}

Önceki işleyici herhangi bir hizmet ömrüyle kaydedilebilir. Aşağıdaki kod, önceki işleyiciyi kaydetmek için kullanır AddSingleton :

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

Uygulama başlatıldığında işleyicinin bir örneği oluşturulur ve DI kayıtlı ILoggerFactory öğesini oluşturucusuna ekler.

Dekont

Entity Framework (EF) kullanan yetkilendirme işleyicilerini tekil olarak kaydetmeyin.

Bağımlılık ekleme kullanılarak yapılandırma sırasında yetkilendirme işleyicilerinin hizmet koleksiyonuna kaydedilmesi gerekir.

Yetkilendirme işleyicisi içinde değerlendirmek istediğiniz bir kural deposuna sahip olduğunuzu ve bu deponun hizmet koleksiyonuna kaydedildiğini varsayalım. Yetkilendirme bunu çözer ve oluşturucuya ekler.

Örneğin, .NET günlük altyapısını kullanmak için, aşağıdaki örnekte gösterildiği gibi işleyiciye ekleyin 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;
    }
}

Önceki işleyici herhangi bir hizmet ömrüyle kaydedilebilir. Aşağıdaki kod, önceki işleyiciyi kaydetmek için kullanır AddSingleton :

services.AddSingleton<IAuthorizationHandler, SampleAuthorizationHandler>();

Uygulama başlatıldığında işleyicinin bir örneği oluşturulur ve DI kayıtlı ILoggerFactory öğesini oluşturucusuna ekler.

Dekont

Entity Framework (EF) kullanan yetkilendirme işleyicilerini tekil olarak kaydetmeyin.