다음을 통해 공유


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를 삽입합니다.

참고 항목

EF(Entity Framework)를 싱글톤으로 사용하는 권한 부여 처리기를 등록하지 마세요.

권한 부여 처리기는 종속성 주입을 사용하여 구성하는 동안 서비스 컬렉션에 등록되어야 합니다.

권한 부여 처리기 내에서 평가하려는 규칙의 리포지토리가 있고 해당 리포지토리가 서비스 컬렉션에 등록되어 있다고 가정합니다. 권한 부여는 이를 확인하고 생성자에 삽입합니다.

예를 들어 .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를 삽입합니다.

참고 항목

EF(Entity Framework)를 싱글톤으로 사용하는 권한 부여 처리기를 등록하지 마세요.