在 .NET Core 中,HttpContext.SignOutAsync() 和 ControllerBase.SignOut() 之间有什么区别?

In .NET Core, What are the differences between HttpContext.SignOutAsync() and ControllerBase.SignOut()?

我目前正在 .NET Core 2.2 中为我们的 WsFederation 实现注销方法。我发现了这两种方法:

  1. ControllerBase.SignOut 方法
  2. AuthenticationHttpContextExtensions.SignOutAsync 方法

我找到了这两个答案:

  1. ASP.NET Core Identity 2.0 SignoutAsync is not logging out user if the user signed in with Google

我还查看了 Microsoft 文档:

  1. https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.controllerbase.signout?view=aspnetcore-2.2#Microsoft_AspNetCore_Mvc_ControllerBase_SignOut_System_String___

  2. https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.authentication.authenticationhttpcontextextensions.signoutasync?view=aspnetcore-2.2#Microsoft_AspNetCore_Authentication_AuthenticationHttpContextExtensions_SignOutAsync_Microsoft_AspNetCore_Http_HttpContext_

仍然没有明确的答案。

谁能告诉我有什么区别?以及我应该使用哪一个从我在 Startup.cs.

中建立的中间件中注销 authentication/WsFederation

提前致谢!

T

正在为 SignoutResult 查看 sourceControllerBase.Signout returns 一个新的 SignoutResult),ExecuteResultAsync 调用 SignOutAsyncHttpContext 上。唯一的区别可能是在 ControllerBase 上调用它会导致向客户端发送正确的响应。