2009-03-20 6 views
5

Lorsque vous utilisez l'abonnement asp.net et que vous avez la balise [Authorize] sur un contrôleur/Action, parfois lorsque vous revenez de prendre un café/une promenade, vous avez été déconnecté du site. Lorsque vous cliquez sur un bouton ou un lien qui invoque un appel Ajax, le code HTML renvoyé n'est pas celui que vous avez demandé mais l'écran de connexion, qui s'affiche ensuite sur la page (si vous utilisez $ ("placeholder") .html (résultat)).Écran de connexion dans le résultat ajax - Asp.net Mvc

Est-il possible de détecter cela dans jQuery? Comme il est legit html vous n'obtenez pas d'erreur, mais ce n'est pas quelque chose que vous voulez avoir.

Répondre

6

Une chose que vous pourriez faire est la détection de délai de session côté client. Configurez une minuterie qui expirera peu de temps avant l'expiration de votre session. Faites en sorte que le minuteur affiche une boîte de dialogue indiquant que la session est sur le point d'expirer et que l'utilisateur ait la possibilité de le renouveler (renvoyer une requête AJAX pour actualiser le minuteur de session). Avoir une autre minuterie sur la boîte de dialogue qui expirera avant que le temps restant sur la session réelle s'épuise. Si cette minuterie se déclenche, réinitialisez le href de la page à l'URL de déconnexion et déconnectez l'utilisateur. Évidemment, les minuteries devront être réinitialisées par l'activité de l'utilisateur sur la page - requêtes ajax, etc.

6

L'approche de la session client de tvanfosson est vraiment très bien, en fait - j'ai été impressionnée par plusieurs sites que j'ai ' Je suis retourné après le déjeuner et j'ai constaté qu'ils étaient automatiquement redirigés vers la page de connexion.

Une autre approche pourrait être comme suit:

Vous envoyer une requête Ajax à (par exemple)/compte/Détails, mais votre cookie de connexion a expiré, de sorte que vous n'êtes pas autorisé à voir que; le contrôleur renvoie/Security/Login à la place.

Si votre contrôleur retourne la vue de connexion au lieu de la page demandée, avez-vous envisagé de mettre le code de réponse à 401 Not authorized au lieu de 200 OK?

Vous devrez alors modifier votre rappel Ajax pour inspecter le code d'état de la réponse Ajax, et s'il s'agit d'un 401 Non autorisé, vous pouvez répondre en conséquence - rediriger vers la page de connexion, afficher une boîte de connexion pop-up ou juste un message d'erreur disant "désolé, vous devez vous reconnecter"