2008-09-05 8 views
0

L'un des problèmes que j'ai rencontrés ayant des tâches complexes sur le navigateur est avec des délais d'attente automatiques.Utilisation automatique du client Web de temporisation

Actuellement, notre site a une durée de glissement de 30 minutes. Normalement, ce n'est pas un problème car nous utilisons asp.net et la plupart du temps les utilisateurs mettent à jour un ou deux champs et ensuite soumettent le formulaire. Cela maintient évidemment la session active. J'ai lutté avec la façon de gérer cela avec des formes beaucoup plus complexes/interaction de l'utilisateur où il y a peu, voire pas d'allers-retours au serveur.

Maintenant, les utilisateurs peuvent afficher des rapports, taper des courriels, etc. sur notre site, et j'ai du mal à maintenir leur session active pendant qu'ils utilisent le navigateur, mais ils ne publient pas activement d'informations. Je me passerais de l'expiration coulissante, mais c'est une exigence, alors je suis coincé avec. La plupart de nos utilisateurs sont en dehors de l'organisation, je ne peux donc utiliser aucune forme de SSO.

Est-ce que quelqu'un a une solution élégante (je vais même aller pour un moche si cela fonctionne), ou ai-je pas de chance?

Répondre

2

Nous avons récemment examiné cette question dans mon organisation. Bien que ce ne soit pas la meilleure solution, et que frapper la bonne session à travers plusieurs fenêtres de navigateur soit approximatif, nous avons ajouté un compte à rebours sur notre page, un bouton qui revenait sur le serveur pour redémarrer la session et fournissait également l'utilisateur avec un popup JavaScript (la partie préférée de l'utilisateur de la solution) avec un message disant que la session était, disons, à cinq minutes de l'expiration du délai et de cliquer sur le bouton "OK" pour redémarrer. Ensuite, le bouton allait toucher le serveur pour redémarrer la session, redémarrer le minuteur sur la page de base, fermer la fenêtre contextuelle et la page de base n'avait pas besoin d'être rafraîchie du tout. Demandez au navigateur de faire un ping sur le serveur via Ajax périodiquement pour maintenir la session en vie.

4

La plupart des sites font quelque chose d'utile dans ce ping, comme enregistrer un brouillon de la soumission de l'utilisateur.

0

Ah, le vieux problème de ne pas vouloir augmenter le temps de session en raison de l'utilisation de la mémoire plus élevée. Une réponse est également de définir un cookie qui expire après plus d'un jour qui dira au système de se souvenir de l'utilisateur. C'est ce que fait eBay, entre autres.

1

erickson est sur la bonne voie. Sur les zones du site sujettes à l'expiration de la session en raison de «l'interaction complexe des formulaires/utilisateurs où il y a peu ou pas d'allers-retours au serveur», vous pouvez placer un contrôle keepalive pour continuer à envoyer un ping au serveur. gardant ainsi la session en vie.

Here est un exemple de contrôle que vous pouvez utiliser ou utiliser comme base pour coder le vôtre.

Questions connexes