Asp.net core mvc ControllerBase中的SignIn和SignOut方法的目的是什么?

Asp.net core mvc ControllerBase中的SignIn和SignOut方法的目的是什么?,asp.net-core-mvc,Asp.net Core Mvc,类中的和方法的用途是什么(由Controller类继承) 这两个方法分别返回a和a,它们都继承自基类(实现IActionResult) 查找SignInResult和SignOutResult的源代码,您会看到它们分别调用和 但我从未见过这两种方法在任何地方使用。如果查看AccountController,则它使用ApplicationSigningManager登录和注销,而不是使用上述方法 由于它们是ActionResult,因此我相信它们将用作控制器中操作的返回值 比如像这样的东西比如:

类中的和方法的用途是什么(由
Controller
类继承)

这两个方法分别返回a和a,它们都继承自基类(实现
IActionResult

查找
SignInResult
SignOutResult
的源代码,您会看到它们分别调用和

但我从未见过这两种方法在任何地方使用。如果查看
AccountController
,则它使用
ApplicationSigningManager
登录和注销,而不是使用上述方法

由于它们是
ActionResult
,因此我相信它们将用作控制器中操作的返回值

比如像这样的东西比如:

public IActionResult SignIn()
{
返回登录(用户,“自动”);
}
但这显然毫无作用。它似乎没有登录用户,也没有向用户返回任何内容。我不确定要传递哪些参数,但我在控制器中找到了
User
(来自
HttpContext


那么,这两种方法的目的是什么,以及它们打算如何使用呢?

AccountController使用ASP.Identity,而ASP.Identity在引擎盖下面会调用
HttpContext.Authentication.SignInAsync()


它们为那些不想使用ASP.NET身份并且想自己做任何事情的人提供了方便

签名方法的第二个参数是
AuthenticationScheme
字符串

此字符串可以是:

  • “持票人”
  • “饼干”
  • “OpenIdConnect”
或者,如果使用第三方身份验证提供商:

  • “谷歌”
  • “Facebook”
  • “微软”
  • “推特”
您可以使用常量,而不是将此参数作为硬编码字符串传递


如果您有其他第三方身份验证提供商,
AuthenticationScheme
字符串可以是其他内容。另外,一些身份验证提供程序(如
UseCookieAuthentication
中间件)允许您指定
AuthenticationScheme

我明白了。你知道为什么它什么也不回吗?或者如何使用它?要指定哪些参数等等。老实说,如果你问这个问题,那不是你的问题。这并不意味着,这是一个有趣的安全接口点,除非您完全理解它以及登录和身份验证中间件是如何结合在一起的,否则不应该使用它。有一些文档介绍了如何使用不带标识的cookie中间件,它直接使用上下文,但对于大多数人来说,这并不是你最终想要做的事情。