HttpContext SignOutAsync 不一致

问题描述 投票:0回答:1

我有一个登录功能,用户可以通过其 Microsoft 帐户登录网站。

使用 HttpContext 类,我尝试使用 SignOutAsync 注销用户。我遇到的问题是,当我在 Edge 中执行此操作时它可以工作,但是当我尝试在私人窗口、Chrome 和 Firefox 中注销时,它不会将我注销。

[HttpGet("Logout")]
public async Task<IActionResult> Logout()
{
    await this.HttpContext.SignOutAsync();
    return RedirectToAction("Login", "Account");
}

[Authorize(AuthenticationSchemes = OpenIdConnectDefaults.AuthenticationScheme)]
[HttpGet("Login")]
public async Task<IActionResult> Login()
{

    return Redirect(this.homepageLink);
}

我尝试了 SignOutAsync 的不同重载,例如放置 CookieAuthenticationDefaults.AuthenticationScheme 和 OpenIdConnectDefaults.AuthenticationScheme,期望它能够解决问题,但最终并没有发生。

如果我遗漏了任何可以帮助解决此问题的信息,我可以提供更多详细信息。

c# asp.net-core cookies asp.net-identity
1个回答
0
投票

根据您的设置,您需要确保退出正在使用的所有不同架构。这是我使用的一个例子。它首先删除 cookie,然后使用 OIDC 的众所周知的功能通过重定向到我的 SSO 应用程序来执行全局 lout。如果您使用 OIDC,则无需在客户端上添加任何额外代码即可使用。

public IActionResult Logout() => SignOut("Cookies", "oidc");
© www.soinside.com 2019 - 2024. All rights reserved.