2010-03-24 6 views
3

Sur mon site Web, j'ai implémenté des valeurs de session personnalisées. Dans lequel, à la connexion, je définis la valeur de la session sur un objet. Cet objet est utilisé pour extraire des données spécifiques à l'utilisateur à partir de DB.Session ASP.NET MVC sur plusieurs sous-domaines

maintenant le problème est Si l'utilisateur se connecte avec: test1.somesite.com et se déconnecte et se connecte à nouveau avec: test2.somesite.com cet utilisateur reçoit toujours les données de l'objet spécifique à test1.somesite.com. Le point est celui auquel l'utilisateur du site se connecte pour la première fois s'il se connecte avec un autre sous-domaine et obtient toujours les données de la connexion au sous-domaine précédente.

lors de la déconnexion d'un domaine spécifique j'ai effacé toutes les sessions (tout essayé): en mettant HttpContext.session ["UserDetail"] = null ;, HttpContext.Session.Abandon() et aussi HttpContext.Session.Clear() ;

, mais rien ne semble fonctionner

et je n'ai pas aussi beaucoup idée comment les variables de session sont traités dans les sous-domaines. Je veux dire que si j'initialise une session avec une valeur en visitant test1.somesite.com cette valeur sera également visible si sur le même ordinateur et sur le même navigateur j'ouvre aussi test2.somesite.com.

toute aide s'il vous plaît

+0

Est-ce que HttpContext.Session.SessionId correspond également? – mxmissile

+0

Qu'est-ce que vous utilisez pour votre fournisseur de session? Application? Base de données? Un service partagé? – Pharcyde

Répondre

1

Cela ressemble à un problème de cookie. Essayez d'effacer le cookie de session. Quelque chose du genre:

if (!User.Identity.IsAuthenticated) 
{ 
    if (Request.Cookies["ASP.NET_SessionId"] != null) 
    { 
     Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddDays(-1); 
    } 
    Session.Abandon(); 
} 
0

Ce que vous devez faire est de définir votre cookie d'identifiant de session asp.net pour écrire dans un domaine générique.

Response.Cookies ("ASP.NET_SessionId"). Domain = "yourdomain.com" // ou "* .votredomaine.com"

Alors que le cookie peut flotter à vos sous-domaines.

+0

Je pense qu'il ne veut pas que cela arrive – Pharcyde

Questions connexes