2016-10-10 12 views
0

ControllerBaseクラス(Controllerクラスに継承されています)のSignInおよびSignOutメソッドの目的は何ですか。ControllerBaseのSignInとSignOutメソッドの目的は何ですか?

これらの2つの方法は、それぞれSignInResultSignOutResult、(IActionResultを実装する)、ベースクラスActionResultから継承するの両方を返します。

SignInResultSignOutResultのソースコードを参照すると、それぞれHttpContext.Authentication.SignInAsync()HttpContext.Authentication.SignOutAsync()が呼び出されます。

しかし、私はこれらの2つの方法がどこにも使われていることは見たことがありません。 AccountControllerを見ると、前述の方法ではなく、ApplicationSignInManagerを使用してサインインおよびサインアウトします。

これらはActionResultなので、コントローラのアクションの戻り値として使用されると考えられます。

public IActionResult SignIn() 
{ 
    return SignIn(User, "Automatic"); 
} 

しかし、これは明らかに何もしません。例えば、このようなものとして

。ユーザーにサインインしていないようで、ユーザーに何も返されないようです。どのパラメータを渡すべきかわかりませんが、User(コントローラにはHttpContext)があります。

だから、これらの2つの方法の目的は何ですか?それらはどのように使用されるのですか?

答えて

3

AccountControllerが今度は、ボンネットの下に彼らは、ASP.NETのアイデンティティを使用したいと全力を尽くすしたい人はありません人々のために便利なようにそこにいるHttpContext.Authentication.SignInAsync()

を呼び出していASP.Identityを、使用しています自分自身。

+0

です。それが何も返さない理由を知っていますか?またはそれを使用する方法?どんなパラメータを指定するかなど – Fred

+1

正直なところ、あなたがそれを求めているなら、それはあなたのためではありません。これは意味がありません。完全に理解していない場合や、サインインと認証のミドルウェアがどういった方法でハングアップしているのか分からない限り、使用しないでください。アイデンティティを使わずに直接Cookieミドルウェアを使用する方法については、https://docs.asp.net/en/latest/security/authentication/cookie.htmlを参照してください。しかし、大部分の人にとっては、最終的にやりたい – blowdart

0

SignInメソッドの2番目のパラメータは、AuthenticationScheme文字列です。

この文字列は指定できます

  • "ベアラー"
  • "クッキー"
  • "OpenIdConnect"

た場合、またはサードパーティの認証プロバイダを使用して:

  • "Google"
  • 「フェイスブック」
  • 「マイクロソフト」
  • 「ツイッター」

代わりにハードコードされた文字列として、このパラメータを渡すので、あなたは定数を使用することができます。

他のサードパーティの認証プロバイダをお持ちの場合は、AuthenticationScheme文字列を別のものにすることができます。また、一部の認証プロバイダ(UseCookieAuthenticationミドルウェアなど)では、AuthenticationSchemeを指定できます。

関連する問題