SignIn
类中的SignOut
和ControllerBase
方法的目的是什么(由Controller
类继承)。
这两个方法分别返回SignInResult
和SignOutResult
,它们都继承自基类ActionResult
(实现IActionResult
)。
查看SignInResult
和SignOutResult
的源代码,您会看到他们分别致电HttpContext.Authentication.SignInAsync()
和HttpContext.Authentication.SignOutAsync()
。
但我从未见过这两种方法在任何地方使用过。如果您查看AccountController
,则使用ApplicationSignInManager
进行登录和退出,而不是上述方法。
由于这些是ActionResult
,因此我认为这些将被用作控制器中操作的返回值。
比如像这样的东西:
public IActionResult SignIn()
{
return SignIn(User, "Automatic");
}
但这显然什么也没做。它似乎没有签署用户,它似乎没有向用户返回任何内容。我不确定要传递哪些参数,但我发现User
(来自控制器中的HttpContext
)。
那么这两种方法的目的是什么,以及它们是如何使用的呢?
答案 0 :(得分:3)
AccountController使用ASP.Identity,反过来,它在引擎盖下调用HttpContext.Authentication.SignInAsync()
他们为那些不想使用ASP.NET身份并希望自己做所有事情的人们提供便利。
答案 1 :(得分:1)
SignIn
方法的第二个参数是AuthenticationScheme
字符串。
此字符串可以是:
或者如果使用第三方身份验证提供程序:
您可以使用常量。
,而不是将此参数作为硬编码字符串传递AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme
AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.AuthenticationScheme
AspNetCore.Authentication.OpenIdConnect.OpenIdConnectDefaults.AuthenticationScheme
AspNetCore.Authentication.Google.GoogleDefaults.AuthenticationScheme
AspNetCore.Authentication.Facebook.FacebookDefaults.AuthenticationScheme
AspNetCore.Authentication.Twitter.TwitterDefaults.AuthenticationScheme
AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults.AuthenticationScheme
如果您有其他第三方身份验证提供程序,AuthenticationScheme
字符串可能是其他内容。此外,一些身份验证提供程序(例如UseCookieAuthentication
中间件)允许您指定AuthenticationScheme
。