Incapable de sortir de ASP.NET application MVC à l'aide de FormsAuthentication.SignOut()
Je suis en train de mettre en œuvre la Fonctionnalité de Déconnexion dans ASP.NET MVC.
- Je utiliser l'Authentification par formulaire pour mon projet.
C'est ma Déconnexion code:
FormsAuthentication.SignOut();
Response.Cookies.Clear();
FormsAuthenticationTicket ticket =
new FormsAuthenticationTicket(
1,
FormsAuthentication.FormsCookieName,
DateTime.Today.AddYears(-1),
DateTime.Today.AddYears(-2),
true,
string.Empty);
Response.Cookies[FormsAuthentication.FormsCookieName].Value =
FormsAuthentication.Encrypt(ticket);
Response.Cookies[FormsAuthentication.FormsCookieName].Expires =
DateTime.Today.AddYears(-2);
return Redirect("LogOn");
Ce code redirige l'utilisateur vers l'Écran de Connexion. Cependant, si j'appelle une méthode d'action en spécifiant le nom dans la barre d'adresse (ou sélectionnez le lien précédent de la barre d'adresse de liste déroulante), je suis toujours en mesure d'atteindre les pages sécurisées sans ouvrir de session.
Quelqu'un pourrait-il m'aider à résoudre le problème?
Pourquoi u ne pas utiliser FormsAuthentication.SignOut() ?
Maintenant changé le code source , déjà l'appel de la méthode a été enveloppé.
Pourriez-vous nous donner quelques détails sur la façon dont vous avez réellement faire vos pages sécurisées sécurisé?
J'ai configuré dans le Web.Config de refuser l'accès pour les utilisateurs non authentifiés.
il est votre problème. Ce n'est pas de formulaires web, c'est MVC. Venemo la réponse est sur place - vous besoin pour décorer les méthodes d'action avec les autoriser. Je parie que même si vous n'avez pas vous connecter, vous peut obtenir à n'importe quelle page sécurisée.
Maintenant changé le code source , déjà l'appel de la méthode a été enveloppé.
Pourriez-vous nous donner quelques détails sur la façon dont vous avez réellement faire vos pages sécurisées sécurisé?
J'ai configuré dans le Web.Config de refuser l'accès pour les utilisateurs non authentifiés.
il est votre problème. Ce n'est pas de formulaires web, c'est MVC. Venemo la réponse est sur place - vous besoin pour décorer les méthodes d'action avec les autoriser. Je parie que même si vous n'avez pas vous connecter, vous peut obtenir à n'importe quelle page sécurisée.
OriginalL'auteur vijaysylvester | 2010-10-08
Vous devez vous connecter pour publier un commentaire.
C'est étrange... je fais un seul appel à: FormsAuthentication.SignOut(); et ça marche...
OriginalL'auteur Palantir
À répondre correctement à votre question, je voudrais savoir comment protégez-vous votre "sécuriser" les pages.
Je soupçonne que vous êtes en train de faire quelque chose de mal.
Un simple appel à
FormsAuthentication.SignOut()
devrait être suffisant, car il efface le cookie d'authentification, rendant ainsi les autres appels de méthode vous y faire redondant.Avec ASP.NET MVC, vous devez utiliser le
AuthorizeAttribute
sur une méthode d'action pour interdire les non-authentifié visiteurs de l'utiliser. (Ce qui signifie: l'ancien chemin que vous avez fait avec des Formulaires Web en spécifiant l'emplacement des balises dansWeb.config
ne fonctionne plus avec MVC.)Par exemple, voici un petit extrait de code de mon
ForumController
classe:Alors, comment expliquez-vous qu'il fonctionne pour moi et @Palantir trop?
il est exact que le cookie sera envoyé (jusqu'à ce qu'il est expiré), mais il l'habitude de la matière, que ce cookie sera considéré comme "obsolète" pour ASP.NET. Il y a d'autres mesures afin de renforcer l', tels que l'expiration absolue et SSL - mais le "hack" de l'ajout d'un cookie avec le même nom n'est pas l'un d'eux. Je ne pense pas que FormsAuth est le problème ici.
Cheers mate! Vous avez tous deux ont été couronnées de succès dans la 1ère ligne qui est FormsAuthentication.SignOut() , Puisque je n'étais pas , j'ai essayé d'autres options aussi bien. Aussi simple que cela.
Im confus, vous dites que vous
didnt
ont FormsAuthentication.SignOut() dans votre code d'origine? Alors pourquoi est-il à la question?OriginalL'auteur Venemo
La question suivante est de parenté, c'est la solution qui fonctionne pour moi
FormsAuthentication.SignOut() ne permet pas de déconnecter l'utilisateur
OriginalL'auteur Phil Hale
Cette méthode fonctionne, si vous n'avez pas désactiver[commentaire] les balises suivantes dans le web.config fichier pour tester votre application web facilement.
web.config
OriginalL'auteur Jahed Kabiri