在 ASP.NET Core MVC 中,使用外部提供者(如 Google、Facebook、Twitter)来进行身份验证和授权是非常常见的。为了退出应用程序,您可以在 ASP.NET Core 中使用注销功能。但是,使用外部提供程序进行注销时可能会出现错误,因为默认情况下,注销请求将使用 GET 方法发送。
要解决此问题,您需要创建一个 Logout 操作方法,其中使用 POST 方法发送注销请求,以确保注销请求从服务器到外部提供者。
下面是一个示例:
public async Task
// 如果用户已经注销,则重定向到主页
if (!vm.ShowLogoutPrompt)
{
return RedirectToAction("Index", "Home");
}
// 如果设置了外部注销,则从外部提供者注销
if (vm.EnableSignOutPrompt)
{
return SignOut(new AuthenticationProperties { RedirectUri = Url.Action("Logout", "Account") },
vm.ExternalAuthenticationScheme);
}
// 否则,直接注销
await HttpContext.SignOutAsync();
return RedirectToAction("Index", "Home");
}
您可以使用注销视图模型来控制注销选项,但这是可选的。在这个示例中,如果 ShowLogoutPrompt 设置为 FALSE,则用户将被重定向到主页。如果 EnableSignOutPrompt 设置为 TRUE,则会触发外部提供程序注销。如果都没有设置,用户将直接注销。
请注意,这只是示例代码,您需要根据您的应用程序需求进行修改和调整。