Quelle est la meilleure solution de contournement pour le délai d’expiration de l’authentification des formulaires ASP.NET lors de l’utilisation du mappage générique ?

StackOverflow https://stackoverflow.com/questions/57739

Question

Mon équipe travaille sur un vieux site Web merdique et la plupart des pages sont toujours en ASP classique.Cependant, nous avons récemment migré vers l'authentification par formulaire à l'aide d'ASP.NET et du mappage générique.Tout fonctionne étonnamment bien, sauf une chose :les utilisateurs connectés expirent trop rapidement.Après avoir consulté les journaux, il semble que les utilisateurs expirent exactement après 20 minutes (ce qui correspond au délai d'expiration spécifié pour cause d'inactivité).

Notre hypothèse est donc que les pages classiques ASP ne déclenchent aucun mécanisme du cadre d'authentification par formulaire qui réinitialise le minuteur d'inactivité.J'ai cherché sur Google et j'ai même lu le message de cartographie générique du Great Gu, mais je ne trouve toujours personne d'autre qui ait ce problème.Alors, 1) Avez-vous déjà vu ce problème ?et 2) Quelle est la meilleure solution de contournement ?(à part placer manuellement un cadre caché dans chaque page ASP déjantée qui charge une page .NET stupide en arrière-plan)

Mise à jour: glissementExpiration est réglé sur vrai

Aussi:Nous ne pouvons pas utiliser de sessions perpétuelles car nous avons besoin que l'application expire après 20 minutes d'inactivité.De plus, ce terrible site a été écrit de telle sorte que l'interface soit généralement stockée dans la page.Il n’existe pas de simple morceau de code d’interface dans lequel je pourrais insérer du JavaScript.Nous avons essayé de mettre du js dans un fichier d'inclusion qui a été appelé par environ 80 % de nos pages, mais cela a causé des problèmes ésotériques avec les tampons de téléchargement de fichiers, nous devrons donc peut-être essayer une approche différente.Merci.

Était-ce utile?

La solution

Créez une session perpétuelle.

Essentiellement, vous finissez par émettre du JavaScript et une balise d'image dans votre page maître ou dans les contrôles des utilisateurs de navigation (quoi que vous utilisiez pour une navigation cohérente).Ce JavaScript, à certains intervalles, modifie la source de la balise d'image en un point de terminaison de gestionnaire http (certains .aspx, .ashx) qui renvoie un gif clair de 1 x 1 pix en réponse à l'image.La demande constante garantit que les pages inactives maintiendront la session en vie.

Tant qu'une fenêtre de navigateur est ouverte sur votre page, votre session ASP.NET n'expirera jamais.

Souvent, JavaScript ajoutera un nombre aléatoire à la requête afin que le navigateur ne mette pas la requête en cache.

Une procédure pas à pas décente est disponible ici.

Autres conseils

Je suppose que vous avez créé manuellement le cookie, auquel cas votre valeur de délai d'attente dans le code remplace probablement votre valeur de délai d'attente dans la configuration.

Premièrement, si possible (ce qui n'est probablement pas le cas), ne créez pas le cookie manuellement, cela vous évitera non seulement ce mal de tête mais des dizaines d'autres.

Si vous devez créer manuellement le cookie, assurez-vous que le délai d'expiration que vous utilisez lit réellement la valeur de délai d'expiration que vous avez définie dans le fichier de configuration et que l'expiration glissante est définie sur vrai (ce que vous avez indiqué).

Cela dit, nous rencontrons encore occasionnellement d’étranges problèmes de délai d’attente lorsque les cookies sont créés manuellement.Là où je travaille, nous avons mis en place une solution qui permettait aux cookies d'être créés automatiquement et les délais d'attente ne posaient plus de problème ;cependant, cela a créé d’autres problèmes et nous avons été obligés de revenir en arrière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top