Question

J'utilise django et jquery pour mettre en œuvre des sessions authentifiées et les requêtes Ajax.

J'ai authentifié temporisations de session pour enregistrer les utilisateurs authentifiés après une longue période d'inactivité sur mon site. Certaines des pages sur mon site ont beaucoup d'appels AJAX à ceux qui exigent que l'utilisateur soit dans une session authentifiée. Lorsqu'un utilisateur laisse une telle page ouverte pendant une longue période et a la chronométré automatique de session sur, tous les appels AJAX en sera tout simplement échouer et montrer une erreur de navigateur. Ma pile web (django) retourne une redirection pour vous connecter pour ces requêtes AJAX, mais ils montrent tout comme les erreurs à .ajax $ () (en utilisant jquery.)

Comment pourrais-je recharger la page et l'envoyer à l'utilisateur de la page de connexion par le biais d'une requête AJAX quand je trouve que leur session de auth a expiré?

Était-ce utile?

La solution

Une façon serait d'avoir un script qui vient pings une page pour voir si oui ou non il est toujours connecté, mais cela augmenterait le nombre de requêtes AJAX que vous auriez à faire.

Une autre option est d'avoir la fonction de complete de $.ajax() vérifier le code d'état HTTP sur l'objet XMLHttpRequest qui est passé dans:

$.ajax({..., complete = function(xhr, textStatus){
    if(xhr.status > 300 && xhr.status < 400) //you got a redirect
        window.location.href = '/login/';
    ...
    }, ...);

Autres conseils

Simple vraiment, avez tout script que vous interrogez retourner une sorte de code d'erreur, peut-être

{'error', 'notloggedin'}

alors, tout ce que vous devez faire est de vérifier cette valeur dans votre javascript. Si on le trouve, alors vous faites quelque chose comme

window.location.href = '/login/';

pour faire le javascript redirection vers la page de connexion (modifier le chemin si nécessaire)

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