Hola usuario de nuestro sitio, hemos encontrado la solución a lo que buscabas, continúa leyendo y la hallarás aquí.
Como se menciona en el tutorial, el middleware utilizado usa el tipo de autenticación predeterminado pero no lo anula.
Al usar solo externalCookie como parámetro para Owin, está borrando la cookie para Asp, pero no el utilizado para almacenar el proveedor de Google,
para hacerlo, tendrás que conseguir el array de todas las cookies actuales. Se puede hacer de la manera fácil como esta:
Request.GetOwinContext()
.Authentication
.SignOut(HttpContext.GetOwinContext()
.Authentication.GetAuthenticationTypes()
.Select(o => o.AuthenticationType).ToArray());
Aquí es donde se dice en el Tutorial:
La llamada a UseGoogleAuthentication debería ser bastante obvia por qué es necesaria.
Pero el primero, SetDefaultSignInAsAuthenticationType, no es tan obvio. El middleware de inicio de sesión normalmente se basa en el middleware de cookies externo registrado antes que el middleware de inicio de sesión social. middleware de cookies externo, se establece como el tipo de inicio de sesión predeterminado. Así es como el middleware de inicio de sesión social sabe que debe usar la cookie externa. En esta configuración no hay una cookie externa, por lo que debemos configurar manualmente el middleware de la cookie principal como el tipo de inicio de sesión predeterminado.
El middleware de cookies solo emitirá una cookie si el AuthenticationType coincide con el de la identidad creada por el middleware de inicio de sesión social. Al observar la canalización de autenticación externa owin, un socialIn the setup of the
Intente configurar los encabezados de control de caché.
public ActionResult SignOut()
var authenticationTypes = new string[]
DefaultAuthenticationTypes.ApplicationCookie,
DefaultAuthenticationTypes.ExternalCookie
;
AuthenticationManager.SignOut(authenticationTypes);
// HACK: Prevent user from being able to go back to a logged in page once logged out
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
// now redirect
return RedirectToAction("Index", "Home");
private IAuthenticationManager AuthenticationManager
get
return Request.GetOwinContext().Authentication;
No se puede impedir que el usuario haga clic en el botón Atrás del navegador, a menos que pruebe JavaScript, que se puede desactivar. El usuario puede volver a una página y ver lo que había en la página anterior, pero si intenta hacer clic en cualquier enlace protegido o actualizar la página, será redirigido para iniciar sesión.
Si guardas alguna cuestión o forma de arreglar nuestro enunciado te sugerimos dejar una apostilla y con deseo lo leeremos.