2009-07-31 7 views
1
La persistance

J'ai une obligation de persister les cokkies persistants auth pendant une longue période (1 mois)ASP.Net état de session pour les longues Auth Cookies

J'utilise également quelques variables de session. Maintenant, je ne peux pas mettre le délai d'expiration de la session à ce point (cela va tuer le serveur). Il est actuellement réglé sur 30 minutes. Supposons que l'utilisateur garde sa fenêtre de navigateur ouverte pendant une journée, le cookie d'authentification ne va pas expirer, mais la session le fera. Et l'application ne fonctionnera pas.

Donc, une suggestion, des solutions de contournement ou des liens utiles pour ce problème?

+0

Qu'est-ce que vous avez besoin de stocker en session? – UpTheCreek

Répondre

1

Persistant le cookie d'authentification est facile, et indépendante de l'état de session:

<system.web> 
    <authentication mode="Forms"> 
    <forms timeout="43200"/> 
    </authentication> 
</system.web> 

Le délai d'attente est réglée en quelques minutes, donc:

30 (jours) * 24 (heures) * 60 (minutes) = 43200 minutes

Le contenu de la session est un peu plus compliqué, mais réalisable.

Vous avez vraiment besoin de regarder ce que vous stockez réellement dans la session, et si vous avez vraiment besoin tout le temps tout le temps. Comme les variables de session sont stockées sur le serveur, pour les faire durer à travers les redémarrages des applications (par défaut 20 minutes après la dernière activité sur le site, ou 29 heures depuis le dernier redémarrage de l'application, et d'autres cas exceptionnels) à regarder en utilisant autre chose que des sessions InProc - soit en utilisant un serveur de session, ou SqlSessions.

Cependant, il se peut que vous puissiez aussi faire quelque chose avec des profils, donc stockez les variables les moins utilisées dans un magasin de profils et ne les récupérez que lorsque vous en avez vraiment besoin. Sinon, vous voudriez voir comment vous pouvez reconstruire l'état de la session lorsqu'un utilisateur revient - donc stockez une sorte de jeton connu dans un cookie persistant qui vous permet de reprendre là où vous vous étiez arrêté - mais le le moyen le plus facile de le faire est de prendre leur nom d'utilisateur du système d'authentification, et de stocker les détails dans une base de données ...

Questions connexes