login register Sysop! about ME  
qrcode
    최초 작성일 :    2017년 02월 22일
  최종 수정일 :    2017년 02월 22일
  작성자 :    soggun
  편집자 :    soggun (송원석)
  읽음수 :    2,313

강좌 목록으로 돌아가기

필자의 잡담~

이번 컬럼은 ASP.NET Core 보안 강좌의 6번째 글, 요구사항 처리기와 의존성 주입에 대한 글입니다.

모든 컬럼은 http://docs.asp.net의 내용을 참고하여 번역한 것입니다. Windows 뿐만 아니라 Linxu, OS X에서도 동작하는 완전한 크로스 플랫폼 서버기술인 ASP.NET Core! 기대해 주세요.

본 번역문서는 개인적인 취지로 번역되어 제공되는 문서로, 원문을 비롯한 모든 저작권은 마이크로소프트사에 있습니다. 마이크로소프트사의 요청이 있을 경우, 언제라도 게시가 중단될 수 있습니다. 본 번역문서에는 오역이 포함되어 있을 수 있으며 주석도 번역자 개인의 견해일뿐입니다. 마이크로소프트사는 본 문서의 번역된 내용에 대해 일체의 보장을 하지 않습니다. 번역이 완료된 뒤에도 제품이 업그레이드 되거나 기능이 변경됨에 따라 원문도 변경되거나 보완되었을 수 있으므로 참고하시기 바랍니다.

원문: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/dependencyinjection

요구사항 처리기와 의존성 주입

권한부여 처리기는 구성 과정 중, 서비스 컬렉션에 등록되어야 합니다 (의존성 주입을 이용해서).

권한부여 처리기 내부에서 평가하고자 하는 규칙들의 리파지터리가 존재하고, 해당 리파지터리는 서비스 컬렉션에 등록되어 있다고 가정해보겠습니다. 이 경우, 권한부여가 의존성을 해결해서 생성자에 주입시켜줍니다.

가령, 권한부여 처리기에서 ASP.NET의 로깅 기반구조를 사용하기 위해서는 ILoggerFactory의 인스턴스를 처리기에 주입해야 합니다. 이 경우, 권한부여 처리기의 코드는 다음과 비슷할 것입니다:

public class LoggingAuthorizationHandler : AuthorizationHandler<MyRequirement>
{
    ILogger _logger;

    public LoggingAuthorizationHandler(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger(this.GetType().FullName);
    }

    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MyRequirement requirement)
    {
        _logger.LogInformation("Inside my handler");
        // Check if the requirement is fulfilled.
        return Task.CompletedTask;
    }
}

이 처리기는 다음과 같이 services.AddSingleton() 메서드를 이용해서 등록됩니다:

services.AddSingleton<IAuthorizationHandler, LoggingAuthorizationHandler>();

결과적으로 응용 프로그램이 시작되면 권한부여 처리기의 인스턴스가 생성되고, DI가 등록된 ILoggerFactory를 생성자에 주입해줍니다.

노트 : Entity Framework를 사용하는 권한부여 처리기는 싱글톤으로 등록하면 안됩니다.


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})