Asp.net mvc Owin身份验证注销不会使asp.net MVC中的标识无效

Asp.net mvc Owin身份验证注销不会使asp.net MVC中的标识无效,asp.net-mvc,oauth,owin,identity,Asp.net Mvc,Oauth,Owin,Identity,我正在使用OAuth连接QBO(Quickbooks Online)应用程序。QBO有自己的身份验证服务器和身份验证客户端 我正在使用单点登录。因此,成功连接到QBO后,我将使用以下代码设置Cookie: var id = new ClaimsIdentity(claims, "Cookies"); Request.GetOwinContext().Authentication.SignIn(id); My Startup.cs包含: app.UseCookieAuthentication(

我正在使用OAuth连接QBO(Quickbooks Online)应用程序。QBO有自己的身份验证服务器和身份验证客户端

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

var id = new ClaimsIdentity(claims, "Cookies");
Request.GetOwinContext().Authentication.SignIn(id);
My 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());
但用户身份在注销后仍然有效。我尝试过不同的解决方案,但没有成功


有什么想法吗?

当您调用
注销时,它将删除cookie以使用户身份无效,但
用户在该请求期间仍将通过身份验证


您可以在注销用户的操作上添加
[Authorize]
属性,因此它将重定向到登录页面。

用户。身份在下一次请求时仍然有效?@kahbazi注意到注销时cookie被删除。但身份仍然有效。但在刷新时,标识将失效。我需要重定向到登录页面后刚刚注销被调用。注销不会触发任何中间件吗?如何确定标识是否有效?在注销调用后,我检查了User.Identity.IsAuthenticated,这是真的。从视觉上看,无效标识也会导致重定向到登录页面事实上,我的场景是;我通过OAuth连接到QBO,并设置身份以授权mvc控制器。现在,在某个时刻,我的qbo会话过期,它使用于调用qbo REST API的服务上下文无效,我需要当qbo服务上下文过期时,用户重定向到登录页面,我在global.asax错误处理程序上捕获此特定异常。N调用signout,但我也需要重定向。我认为如果您在MVC筛选器中捕获并处理异常会更好,但如果您在
global.asax
中,则可以使用此代码重定向
HttpContext.Current.Server.ClearError();HttpContext.Current.Response.Redirect(“~/Account/Login”)是,我正在自定义异常筛选器类中处理服务器n json异常,但这仅适用于控制器。该异常从cs类触发,该类使用helper类调用qbo api。