2010-02-24 4 views
17

Par défaut, ASP.NET établira ses cookies pour utiliser "mydomain.com" comme leur base. Je préférerais qu'ils utilisent "www.mondomaine.com" à la place, afin que je puisse avoir d'autres sous-domaines "sub.mydomain.com" qui ne contiennent aucun cookie. J'ai fait un peu de creuser dans les objets Session et Cookie, et même si je peux trouver comment définir le domaine pour un seul cookie, je ne vois pas comment le définir pour tous les cookies de session.ASP.NET Les cookies de session - spécifiant le domaine de base

idées de quelqu'un?

session
+0

Ceci est exactement le contraire de mon expérience. De nouveaux cookies de session sont créés chacun de mes sous-domaines. Peut-être que cela a changé avec une nouvelle version d'ASP.NET? J'utilise .NET 4. –

Répondre

19

Créer une ISessionIDManager, puisque vous voulez seulement changer le domaine du cookie nous laisser par défaut faire tout le travail.

Ceci est configuré dans web.config sur l'élément sessionState sous <system.web>.

<sessionState sessionIDManagerType="MySessionIDManager" /> 

Et l'implémentation.

public class MySessionIDManager: SessionIDManager, ISessionIDManager 
{ 
    void ISessionIDManager.SaveSessionID(HttpContext context, string id, out bool redirected, out bool cookieAdded) 
    { 
     base.SaveSessionID(context, id, out redirected, out cookieAdded); 

     if (cookieAdded) { 
      var name = "ASP.NET_SessionId"; 
      var cookie = context.Response.Cookies[ name ]; 
      cookie.Domain = "example.com"; 
     } 
    } 
} 
+1

semble vraiment génial, mais cela n'a pas fonctionné pour moi. Ce code était capable de maintenir le même sessionid pour tous les sous-domaines, mais les données des sessions n'étaient pas lues avec succès. – st78

+0

J'ai bien travaillé pour moi! Merci. – spoulson

+0

Ne devriez-vous pas aussi gérer 'GetSessionId()' et 'RemoveSessionId()' ??? – user2173353

1

utilise un seul biscuit, alors pourquoi ne vous définissez pas dans le domaine uniquement pour les cookies ASP.NET_SessionId?

+0

5, en fait, si vous incluez les _utm ... ceux. Tous ceux-ci sont envoyés pour chaque demande d'image à cdn.mysite.com. Ce serait bien si je n'avais pas besoin de sortir et d'enregistrer mysitecdn.com juste pour éviter cela. –

+0

L'enregistrement d'un "domaine sans cookie" n'est pas si rare: [c'est ce qu'a fait par exemple] (http://sstatic.net/). – scherand

9

Je sais que c'est une vieille question, mais pourriez-vous utiliser l'attribut domain de la section de configuration httpCookies au lieu de le faire dans le code?

<httpCookies domain="String" 
      httpOnlyCookies="true|false" 
      requireSSL="true|false" /> 
+1

ne semble pas avoir d'effet sur le cookie de session – Tarnschaf

+0

Ah oui, assez juste :) Merci. –

+0

+1 Cela a fonctionné pour moi! Cela a affecté les cookies de session et d'authentification. – jkoreska

Questions connexes