2010-02-18 4 views
1

J'ai 2 sous-domaines et je dois définir et lire le même cookie à partir des deux sites Web. Quand j'utilise localhost, tout fonctionne correctement.Le cookie Asp.NET entre les sous-domaines ne se met pas à jour et n'expire pas

Lorsque je passe à l'utilisation d'URL valides, les informations sur les cookies ne sont pas réellement mises à jour lorsque je les mets à jour (date d'expiration à la fermeture).

J'ai le domaine du cookie est réglé sur « .monsite.com »

ce qui est faux?

Répondre

0

Voici mon code: (fonctionne très bien sur localhost mais pas sous-domaine, jamais Déconnecte l'utilisateur car le doesnt cookie obtenir expiré)

page de connexion:

FormsAuthentication.SetAuthCookie(UserName.Text, true); 
    // set the active collab cookie 
    Member member = MemberManager.GetMemberByUsername(UserName.Text); 

    HttpCookie cookie = new HttpCookie("Token", member.Profile.Token); 
    cookie.Domain = ConfigurationManager.AppSettings["CookieDomain"]; 
    cookie.Expires = DateTime.Now.AddYears(1); 
    Response.Cookies.Add(cookie); 

Globax ASAX

if (HttpContext.Current.Request.Cookies["Token"] != null) { 
     string token = HttpContext.Current.Request.Cookies["Token"].Value; 
     if (!string.IsNullOrEmpty(token)) { 
       // If the user is logged in with a different token 
       // or not logged in at all 
       // then log them in with the token from the cookie 
       if ((MemberManager.CurrentMember != null && MemberManager.CurrentMember.Profile.Token != token) || User == null) { 

        Member member = MemberManager.GetMemberByToken(token); 
        if (member != null) { 
         FormsAuthentication.SetAuthCookie(member.User.UserName, true); 
       } 
      } 
       } 
      } 

Déconnexion code:

if (Request.Cookies["Token"] != null) { 
       HttpCookie aCookie = Request.Cookies["Token"]; 
       aCookie.Expires = DateTime.Now.AddDays(-1); 
       Response.Cookies.Add(aCookie); 
} 

Web.Config

<machineKey 
     validationKey="{-snip-}" 
     decryptionKey="{-snip-}" 
     validation="SHA1" 
     decryption="AES" /> 

<authentication mode="Forms"> 
     <forms name="AuthCookie" 
      path="/" 
      loginUrl="~/login.aspx" 
      protection="All" 
      timeout="60"> 
     </forms> 
    </authentication> 
+0

Première: vous devriez mettre à jour votre question, pas poster un aswer. observations: vous n'avez généralement pas besoin de définir le domaine de cookie. Les cookies sont accessibles dans un TLD (domaine de premier niveau) et n'ont pas besoin d'être massés de cette manière. Si vos applications sont dans des TLD différents, cela ne fonctionnera pas, même si je pense que ce n'est pas votre problème. De plus, je ne comprends pas ce que vous essayez d'accomplir et je ne serai probablement pas en mesure de vous aider. Il semble que vous implémentez FormsAuthentication en parallèle à une autre stratégie de gestion d'authentification. Quelles sont vos raisons pour cela? –

0

Essayez ceci:

if (Request.Cookies["Token"] != null) { 
       HttpCookie aCookie = Request.Cookies["Token"]; 
       aCookie.Expires = DateTime.Now.AddDays(-1); 
       Response.Cookies["Token"] = aCookie; 
} 

au lieu de l'ajouter, mettez-le au cookie existant.

+0

Je reçois cette erreur 'System.Web.HttpCookieCollection.this [chaîne]' ne peut pas être affecté à - il est en lecture seule – user176657

0

Vos formes paramètre d'authentification dans le web.config doit permettre l'application croisée réoriente:

<authentication mode="Forms"> 
    <forms loginUrl="~/login.aspx" protection="All" timeout="960" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="false" defaultUrl="~/default.aspx" enableCrossAppRedirects="true"/> 
</authentication> 
+0

Il n'a pas fait de différence, mais merci! – user176657

1

La réponse était de définir le domaine du cookie lorsque expirant sur fermeture de session

HttpCookie aCookie = Request.Cookies["Token"]; 
aCookie.Expires = DateTime.Now.AddDays(-1); 
aCookie.Domain = ConfigurationManager.AppSettings["CookieDomain"]; 
Response.Cookies.Add(aCookie); 

Questions connexes