J'ai un serveur principal écrit en asp.net mvc en utilisant l'authentification par formulaire. Lorsque l'utilisateur n'est pas authentifié, le serveur envoie automatiquement une redirection 302 vers une action de connexion et renvoie une page de connexion.
Côté client, j'ai une liste d'articles. Cette liste n'est accessible qu'aux utilisateurs authentifiés. Sur la page, j'ai un bouton pour rafraîchir la liste en utilisant Ajax (fonction $ .ajax de jQuery).
Maintenant, mon problème est lorsque le ticket d'authentification expire et que l'utilisateur clique sur le bouton Actualiser:
Ce que je veux, c'est lorsque le ticket d'authentification expire et que l'utilisateur clique sur le bouton Actualiser, je devrais pouvoir le détecter et afficher un message demandant à l'utilisateur de se connecter.
J'ai essayé de contourner cela en ajoutant un en-tête personnalisé (IS_LOGIN) dans l'action de connexion et en vérifiant cela dans ma réponse ajax. Mais ce n'est pas une bonne solution.
Mes questions sont donc:
Merci pour toutes les réponses.
Vous ne devez pas rediriger l'appel lorsqu'il s'agit d'un XHR mais répondre par un 401 Unauthorized
et gérez cela dans vos rappels. Je ne connais pas ASP.NET mais j'ai fait quelque chose de similaire avec Spring Security.
Voici le concept:
X-Requested-With: XMLHttpRequest
401 Unauthorized
L'essentiel est que les appels XHR doivent être traités différemment des autres requêtes HTTP dans certains cas. Vous ne devez rediriger un XHR que si la même ressource se trouve à un autre emplacement.
Vous ne pouvez pas gérer les redirections avec les rappels XHR car le navigateur s'en charge automatiquement. Vous ne récupérerez que ce à l'emplacement redirigé.