3

非コアのasp mvcアプリケーションでは、ユーザーをグローバルにサインアウトするためのコントローラーアクションがありました

このように見えました

   public ActionResult Logout()
    {
        Request.GetOwinContext().Authentication.SignOut();
        return Redirect("/");
    }

今、私はASPコアクライアントを持っていて、試したログアウトが必要です

 public async Task<ActionResult> LogOut()
        {
            if (User.Identity.IsAuthenticated)
            {
                await HttpContext.Authentication.SignOutAsync("Cookies");
            }
            return Redirect("/");
        }

アップデート

ログアウトしたように見えますが、認証が必要なサイトにリダイレクトしています。すぐに再びアイデンティティ サーバーにリダイレクトされ、自動的に再びサインインされることがわかります。

要約: ASP アプリケーションではログアウトされますが、ID サーバーではログアウトされません。

グローバルにサインアウトするにはどうすればよいですか? ID サーバーにサインインする必要がありますか?

4

3 に答える 3

0

ASP.NET Identity Server シングル サインアウトの公式ドキュメントは次のとおりです。

シングル サインアウトのドキュメント

これは、デモの実装から取得したサンプルです。

public ActionResult Signout()
{
    Request.GetOwinContext().Authentication.SignOut();
    return Redirect("/");
}

public void SignoutCleanup(string sid)
{
    var cp = (ClaimsPrincipal)User;
    var sidClaim = cp.FindFirst("sid");
    if (sidClaim != null && sidClaim.Value == sid)
    {
        Request.GetOwinContext().Authentication.SignOut("Cookies");
    }
}
于 2016-10-20T18:28:28.613 に答える