2009-11-18 6 views
0

Est-il possible d'utiliser des cookies de session à travers des sessions de navigateur (en particulier Internet Explorer). Je voudrais qu'un utilisateur se connecte à mon site et obtienne donc un cookie et quand l'utilisateur ouvre un autre processus d'IE ont ce cookie de session authentifient l'utilisateur.Cookies de session dans les processus du navigateur

Pour le moment, il est possible de trouver si l'utilisateur ouvre une nouvelle fenêtre ou un nouvel onglet car il réside dans le même processus.

Répondre

0

Les cookies de session expire dès que le navigateur est fermé (ce qui est le comportement par défaut avec les cookies de session PHP au moins). Dans Firefox, démarrer deux processus avec partager les deux sessions sur votre site; avec IE, ce ne sera pas le cas, probablement parce que les cookies de "session" ne sont pas partagés entre les processus. Pour surmonter cela, vous pouvez gérer votre propre ID de session dans un cookie qui n'a pas de date d'expiration 0 mais un horodatage dans le futur (disons 30 jours à venir). De cette façon, le cookie peut survivre entre les processus, mais vous devrez compter sur votre propre ID pour gérer les informations de session.

0

Alors vous voulez quelque chose comme "Se souvenir de moi sur cet ordinateur"? Ensuite, vous devez créer un autre cookie avec une longue durée de vie, par ex. un ans. Dans ce cookie avec un nom spécifique et prédéfini, vous devez définir une longue chaîne autogénérée unique, difficile à deviner (comme un hachage). Vous stockez la même valeur du côté serveur dans une table de base de données que PK, avec l'ID utilisateur (et si nécessaire également l'adresse IP de l'utilisateur en tant que sécurité facultative et le cookie TTL pour le nettoyage automatique). Maintenant, à chaque requête, vérifiez si le cookie est présent et effectuez le login automatique avec l'ID utilisateur associé à la valeur du cookie dans la table DB.

0

Dans le fichier Global.asax de votre application mettre ce code

Public Function Session_Start() 
{ 
    HttpCookie myCookie = HttpContext.Current.Request.Cookies["ASP.NET_SessionId"]; 
    if(myCookie != null) 
    { 
     myCookie.Expires(3); 
    } 
} 

Cela permet de garder votre cookie en vie et donc votre session sera en vie. Si cela ne résout pas votre problème, faites en plus état de session à "StateServer" au lieu de "InProc" qui est par défaut, dans web.config

Questions connexes