Maison >développement back-end >C++ >Comment puis-je maintenir les sessions ASP.NET actives sans affecter l'expérience utilisateur ?
Les sessions utilisateur prolongées sont essentielles pour une expérience en ligne fluide, en particulier lorsque les utilisateurs laissent les fenêtres du navigateur ouvertes pendant de longues périodes. Cependant, les méthodes traditionnelles telles que la prolongation des délais d'expiration des sessions compromettent souvent la sécurité et les performances.
Cet article présente une solution subtile : utiliser des appels AJAX chronométrés pour maintenir silencieusement des sessions actives. Cela implique d'envoyer périodiquement des requêtes à un gestionnaire dédié, actualisant la session sans perturber le flux de travail de l'utilisateur.
Une fonction jQuery lance un appel AJAX vers un SessionHeartbeat.ashx
gestionnaire à intervalles réguliers (par exemple, toutes les 5 minutes) :
<code class="language-javascript">function setHeartbeat() { setTimeout("heartbeat()", 5*60*1000); // Every 5 minutes } function heartbeat() { $.get( "/SessionHeartbeat.ashx", null, function(data) { // Session heartbeat logic (optional visual cue) setHeartbeat(); }, "json" ); }</code>
Le SessionHeartbeatHttpHandler
(ci-dessous) utilise IRequiresSessionState
pour accéder à la session et met simplement à jour une variable de session « Heartbeat » :
<code class="language-csharp">public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { context.Session["Heartbeat"] = DateTime.Now; } }</code>
Enregistrez le gestionnaire dans web.config
:
<code class="language-xml"><httphandlers> <add path="SessionHeartbeat.ashx" type="SessionHeartbeatHttpHandler" validate="false" verb="GET,HEAD" /> </httphandlers></code>
Pour une expérience utilisateur améliorée, ajoutez une subtile animation visuelle de battement de cœur à l'aide de CSS et HTML :
<code class="language-html"><div class="heartbeat">♥</div></code>
<code class="language-css">.heartbeat { position: absolute; display: none; margin: 5px; color: red; right: 0; top: 0; }</code>
La fonction beatHeart
(ci-dessous) contrôle le comportement de fondu entrant/sortant de l'animation :
<code class="language-javascript">// Animate the heartbeat 'times' times function beatHeart(times) { var interval = setInterval(function () { $(".heartbeat").fadeIn(500, function () { $(".heartbeat").fadeOut(500); }); }, 1000); // Beat every second // Clear interval after 'times' beats (with 100ms buffer) setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100); }</code>
Cette approche offre un moyen fluide et non intrusif de maintenir les sessions ASP.NET, garantissant une expérience utilisateur positive même en cas de périodes d'inactivité prolongées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!