OWIN身份validation,使当前令牌失效并删除co​​okie

我有一个OWIN中间件用于身份validation。 我们有两种类型的身份validation。 第一种类型是使用以下配置的承载令牌

var OAuthOptions = new OAuthAuthorizationServerOptions { AuthenticationType = DefaultAuthenticationTypes.ExternalBearer, TokenEndpointPath = new PathString("/Token"), Provider = new ApplicationOAuthProvider(PublicClientId), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), AllowInsecureHttp = true, AccessTokenFormat = new SecureTokenFormatter(GetMachineKey()) }; 

第二种类型使用外部登录的身份validationcookie

 app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ExternalCookie, AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive, CookieHttpOnly = true, CookieSecure = CookieSecureOption.SameAsRequest, CookieName = ".AspNet." + DefaultAuthenticationTypes.ExternalCookie, ExpireTimeSpan = TimeSpan.FromMinutes(5), TicketDataFormat = new SecureTokenFormatter(GetMachineKey()) }); 

当用户注销时,我们实际发出了两个Logout

 Request.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); 

 Request.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ExternalBearer); 

对于第一个,我希望看到从浏览器中删除.AspNet.ExternalCookie Cookie,而不是。 对于第二个,我希望我的令牌失效,而User.Current.Identity = null,这不是。

那么我怎么能1)以物理方式注销当前会话的当前身份? 2)从浏览器中删除外部Cookie?

我遇到了同样的问题,经过3天的搜索,我找到了asnwer(有点……)。

在注销时尝试这些代码行中的一个(并且只有一个)。 (他们都为我工作,但我正在使用第一个,但更多的例子越好,对吧?)

 Request.GetOwinContext().Authentication.SignOut(); Request.GetOwinContext().Authentication.SignOut(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie); HttpContext.Current.GetOwinContext().Authentication.SignOut(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie); 

这个问题在本文中有详细描述,但它没有提供工作修复(至少对我来说没有) http://coding.abel.nu/2014/11/catching-the-system-webowin-cookie -怪物/