Owin身份验证注销不会使asp.net MVC中的Identity无效

时间:2018-04-15 15:32:25

标签: asp.net-mvc oauth owin identity

我使用OAuth连接到QBO(Quickbooks Online)应用。 QBO拥有自己的Auth Server和Auth Client。

我正在使用单点登录。因此,在成功连接到QBO后,我使用以下代码设置Cookie:

var id = new ClaimsIdentity(claims, "Cookies");
Request.GetOwinContext().Authentication.SignIn(id);

我的Startup.cs包含:

 app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = "Cookies",
                AuthenticationMode = AuthenticationMode.Passive,
                LoginPath = new PathString(Paths.LoginPath)

            });

要注销我用过:

HttpContext.GetOwinContext()
                .Authentication
                .SignOut(HttpContext.GetOwinContext().Authentication.GetAuthenticationTypes().
                   Select(o => o.AuthenticationType).ToArray());

但注销后,User.Identity仍然有效。我尝试过不同的解决方案,但没有成功。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

当您致电SignOut时,它会删除Cookie以使用户身份无效,但User仍会在该请求期间进行身份验证。

您可以将[Authorize]属性设置为将用户注销的操作,以便将其重定向到登录页面。