2016-10-10 2 views
0

ControllerBase 클래스의 SignInSignOut 메서드의 용도는 무엇입니까 (Controller 클래스에 의해 상속됩니다). ControllerBase의 SignIn 및 SignOut 메소드의 목적은 무엇입니까?

이러한 두 가지 방법은

SignInResult 및 각각 SignOutResult ( IActionResult를 구현)의 기본 클래스에서 상속하는 ActionResult 모두를 리턴한다.

SignInResultSignOutResult의 소스 코드를 보면 각각 HttpContext.Authentication.SignInAsync()HttpContext.Authentication.SignOutAsync()이라고 부릅니다.

그러나 나는이 두 가지 방법을 어디에서도 사용하지 못했습니다. AccountController을 보면 위에서 언급 한 방법이 아닌 ApplicationSignInManager을 사용하여 로그인하고 로그 아웃합니다.

이들은 ActionResult이기 때문에 컨트롤러의 액션 반환 값으로 사용됩니다.

예를 들어 이런 식으로 뭔가 같은 :

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

그러나이 분명히 않습니다 아무것도. 그것은 사용자 로그인하지 않는 것, 그리고 그것은 사용자에게 아무것도 반환하지 않는 것 같습니다. 어떤 매개 변수를 전달해야할지 모르겠지만 컨트롤러에서 HttpContext에서 User을 찾았습니다.

그래서이 두 가지 방법의 목적은 무엇이며 어떻게 사용 되려고합니까?

답변

3

AccountController 차례로, 후드가하는 아래 그들은 ASP.NET ID를 사용하지 않으려는 사람들의 편의를 거기하고 모든 일을 누가 할 HttpContext.Authentication.SignInAsync()

전화 ASP.Identity를 사용 그들 자신.

+0

알 수 있습니다. 왜 그것이 아무것도 반환하지 않는지 아십니까? 또는 그것을 사용하는 방법? 지정해야 할 매개 변수 등 – Fred

+1

솔직히 묻는다면 그것은 당신을위한 것이 아닙니다. 이것은 의미가 아니며, 완전히 이해하지 못하고 로그인 및 인증 미들웨어가 함께 멈추는 방법을 사용하지 않는 한 흥미로운 보안 인터페이스 지점 중 하나입니다. 컨텍스트를 직접 사용하는 ID없이 쿠키 미들웨어를 사용하는 방법에 대한 문서가 있지만 https://docs.asp.net/en/latest/security/authentication/cookie.html을 참조하십시오.하지만 대부분의 사람들에게는 끝내고 싶다. – blowdart

0

SignIn 메서드의 두 번째 매개 변수는 AuthenticationScheme 문자열입니다.

이 문자열은 다음과 같습니다

  • "무기명"
  • "쿠키"
  • "OpenIdConnect"

또는 타사 인증 공급자를 사용하는 경우 :

  • "Google"
  • "페이스 북"
  • "마이크로 소프트"
  • "트위터는"

대신 하드 코딩 된 문자열로이 매개 변수를 전달하는, 당신은 상수를 사용할 수 있습니다.

,745,

다른 제 3 자 인증 공급자가있는 경우 AuthenticationScheme 문자열은 다른 것일 수 있습니다. 또한 일부 인증 공급자 (예 : UseCookieAuthentication 미들웨어)를 사용하면 AuthenticationScheme을 지정할 수 있습니다.

관련 문제