2009-12-28 5 views
1

Nous avons un site privé pour les clients. Les clients nous disent souvent qu'ils voient le profil d'un autre utilisateur. Notre procédure d'authentification ressemble à ceci: informations d'identification -> vérifiez la table DB -> UserId enregistré dans la session. Si je comprends bien, l'utilisateur passe en quelque sorte à la session d'un autre utilisateur. Quelqu'un peut-il nommer au moins une possibilité pour cela?Commutation de session ASP.NET

+0

Comme vous l'expliquez, il ne devrait pas être possible pour l'utilisateur d'obtenir les sessions des autres. Mais peut-être que vous devriez poster du code. – driis

+0

Si vous pouviez poster du code, cela pourrait vous aider. – RickNZ

+0

Question similaire ici. Essayez-le sur la solution proposée ici. http://stackoverflow.com/questions/1646274/asp-net-session-mix-up-using-stateserver-scary – Pedro

Répondre

2

Lorsque la mise en cache de sortie est activée sur une page, la totalité de la réponse HTTP est mise en cache, y compris les en-têtes de réponse. Cela signifie que l'en-tête HTTP qui définit les cookies de session peut également être mis en cache. Veillez à désactiver la mise en cache de sortie sur toute page qui définit des cookies spécifiques à l'utilisateur. Notez que la désactivation de la mise en cache du mode noyau n'est pas suffisante. La totalité de la réponse est également mise en cache séparément par l'environnement d'exécution ASP.NET. Toutefois, vous pouvez toujours activer en toute sécurité la mise en cache côté client sur ces pages, le cas échéant (Location="Client").

+0

Je suis désolé mais je ne trouve pas le moyen de désactiver cette mise en cache de sortie. Pouvez-vous me montrer la porte? –

+0

Avez-vous une directive '<% @ OutputCache%>' en haut de votre fichier * .aspx? Ou faites-vous des appels contre l'objet 'Response.Cache' dans le code derrière pour la page ou les contrôles ou les pages maîtres qu'il utilise? – RickNZ

1

Il semble que vous enregistriez des données de profil dans des variables statiques. En outre, vous ne devez jamais implémenter votre propre mécanisme d'authentification, mais basez-le sur l'authentification intégrée des formulaires asp.net. Il existe déjà un support intégré pour sql server based authentication.