2017-09-10 3 views
1

개별 계정으로 asp.net ID를 만들 때 계정 컨트롤러 생성 방법에서 2 개의 매개 변수가 있음을 알 수 있습니다.Asp.Net Identity 샘플 - 계정 컨트롤러에 주입되는 위치?

 public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager) 
    { 
     UserManager = userManager; 
     SignInManager = signInManager; 
    } 

언제 주입했는지 알고 싶습니까? 나는 DI 도구를 보지 못했기 때문에.

감사 기본적으로

+0

제거 할 때 여전히 등록 및 로그인 기능을 수행합니다. – Liz

답변

0

는 .NET Framework 및 개별 계정을 사용하여 ASP.NET 웹 응용 프로그램을위한 비주얼 스튜디오에 의해 생성 된 샘플 응용 프로그램 종속성 주입 도구가 없습니다.

내 생각에이 생성자는 DI 프레임 워크를 연결하기 위해 만들어졌습니다. 이러한 종속성을 얻기 위해 키는 AccountController에 선언 된 속성에 있습니다. 당신이 빈 생성자를 통해 AccountController의 인스턴스를 만드는 경우

public ApplicationSignInManager SignInManager 
{ 
    get 
    { 
     return _signInManager ?? 
      HttpContext.GetOwinContext().Get<ApplicationSignInManager>(); 
    } 

    private set 
    { 
     _signInManager = value; 
    } 
} 

는,이 코드는 _signInManager가 설정되어 있지 않은 것을 볼 대신 현재 OWIN 컨텍스트에서 검색됩니다 예를 들어, SignInManager 속성을 참조하십시오. 그러나 DI 생성자를 사용하는 경우 _signInManager은 값을 가지며 대신 사용됩니다.

ApplicationSignInManager 클래스에 대한 모든 액세스는 SignInManager 속성 (AccountController)을 통해 이루어집니다. 예 :

여기에서 SignInManager은 위에 포함 된 속성입니다.

는 OWIN 상황에 맞는 해상도가 설정 한 방법에 대한 자세한 내용은 Startup.Auth.cs에 다음 코드를 참조하십시오이 그 일을 할 HttpContext.GetOwinContext().Get<ApplicationSignInManager>() 수 있습니다 무엇

app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 

입니다.