OWIN Authentification.SignOut() ne semble pas de supprimer le cookie
Je vais avoir quelques problèmes avec OWIN Cookie d'authentification. J'ai un .Net site qui a une certaine MVC pages qui utilise l'authentification par cookie et WebAPI ressources protégées par un porteur du jeton.
Lorsque je me déconnecte, j'ai supprimer le jeton d'accès sur le client, de façon subséquente de demandes d'API n'auront pas le jeton dans l'en-tête et donc l'échec de l'authentification. Cette partie est très bien.
De la même manière, je voudrais aussi le journal pour supprimer le cookie utilisé par le MVC pages. J'ai fait les opérations suivantes sur le serveur:
[Route("Logout")]
public IHttpActionResult Logout()
{
var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignOut();
return Ok();
}
Cependant, après l'appel de la Déconnexion, je peux toujours visiter le protégé MVC page, même si le témoin aurait soi-disant été supprimé par la Déconnexion de l'appel.
Il semble si simple, alors j'ai peut-être raté quelque chose.
Merci,
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire depuis quelques jours. Au lieu de
Utiliser UNE(et une seule) de ces:
Cet article explique pourquoi vos cookies ne sont pas supprimées: http://dotnet.dzone.com/articles/catching-systemwebowin-cookie
Je sais que ma réponse n'est pas plus fondé sur la recherche, mais pour vous dire la vérité, je n'arrivais pas à trouver POURQUOI mon code fourni des exemples de travail pour moi. Je sais juste que Système.Web bousille Owins les cookies si vous ne SignOut() d'une autre manière.
Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie
àSignOut
a fonctionné pour moi. Nous avons été la signature des gens de l'intérieurSession_Start()
dansGlobal.asax.cs
Cela a fonctionné pour moi. Les jeter dans un contrôleur quand vous voulez pour invalider le cookie. En particulier, j'ai utilisé ce pour mettre à jour les rôles de l'utilisateur afin que l'utilisateur n'a pas manuellement déconnecter et de se reconnecter à nouveau pour fixer les menus pouvant être chargés en vertu de l'
@if(User.IsInRole("Admin")){...}
. J'espère que cela aide quelqu'un, il m'a fallu un certain temps pour comprendre cela.J'ai suivi toutes les solutions ci-dessus, mais j'ai confondu à la fin, car l'utilisateur n'a pas déconnecté. Enfin mon problème résolu par:
Parce que j'ai utilisé
SessionAuthenticationModule
de garder les réclamations en elle, puis, après la fermeture de session, l'utilisateur peut utiliser l'application en raison de l'FedAut dans les cookies.Au sujet de l'ASP .Net MVC Déconnexion ne fonctionne pas:-
J'ai eu un problème d'application hébergée sur IIS dans les modes de production n'a pas le droit de travailler avec chrome
bien qu'il a été travaillé droit, tandis que
- à l'aide de Visual Studio de Dev d'hébergement dans tous les navigateurs
- en mode de production sur IE
J'ai eu des problèmes de Démarrage.Auth.CS.
Assurez-vous de dupliquer les configurations ne sont pas là pour la suite des choses
J'ai obtenu ce travail. Voici ce que j'ai fait:
Quand j'ai appelé la Déconnexion de l'action ci-dessus, j'ai utilisé le Violoneux, comme je l'ai été encore tester la fonctionnalité de déconnexion. J'ai mis un point d'arrêt à l'intérieur, et oui, la méthode est invoquée avec succès. Il appelle authenticationManager.SignOut() cependant ma page protégée fonctionne toujours.
Ainsi, au lieu de l'aide de Fiddler, j'ai décidé de mettre le code dans le client:
Filaire ce code jusqu'à un bouton de Déconnexion, et le tour est joué! Les protégés MVC dès maintenant sur la page qui vient avec les attendus 401 non autorisé d'erreur après avoir cliqué sur le bouton de Déconnexion. Comme d'habitude, la WebAPI de ressources est également livré avec une prévue erreur 401.
Il travaille après tout, je pense que le processus de l'aide de Fiddler pour les essais en quelque sorte à l'origine du problème. Cependant je ne peux pas expliquer pourquoi c'est le cas.
Merci pour la lecture.