2017-09-10 5 views
1

個々のアカウントでasp.netアイデンティティを作成すると、私はアカウントコントローラの構築メソッドに気づきます.2つのパラメータがあります。Asp.Net Identityサンプル - アカウントコントローラ用に挿入された場所?

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

注射された時期を知りたいですか? DIツールを見たことがないからです。

おかげデフォルトで

+0

私はそれらを削除すると、それはまだレジスタとログイン機能のために働く。 – Liz

答えて

0

は、.NET Frameworkと個々のアカウントを使用してASP.NET Webアプリケーション用のVisual Studioで作成したサンプルアプリケーションには依存性の注入ツールはありません。

このコンストラクタは、DIフレームワークをプラグインできるように作成されています。キーは、これらの依存関係を取得するためにAccountControllerで宣言されたプロパティにあります。例えば、SignInManagerプロパティを参照してください:あなたは空のコンストラクタを通じてAccountControllerのインスタンスを作成した場合

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

    private set 
    { 
     _signInManager = value; 
    } 
} 

、このコードは_signInManagerが設定され、代わりに現在のOWINコンテキストから取得されていないことがわかります。ただし、DIコンストラクタを使用していた場合は、_signInManagerに値があり、代わりに使用されます。

ApplicationSignInManagerクラスへのすべてのアクセスは、SignInManagerプロパティのAccountControllerでどのように行われるかに注意してください。例:

var result = await SignInManager.PasswordSignInAsync(
    model.Email, model.Password, model.RememberMe, shouldLockout: false); 

ここで、SignInManagerは、上記のプロパティです。 OWINコンテキスト解像度が設定されている方法の詳細については

Startup.Auth.csに以下のコードを参照してください。

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

これは、そのことを行うためにHttpContext.GetOwinContext().Get<ApplicationSignInManager>()を可能にするものです。

関連する問題