2017-09-06 4 views
1

J'essaie de réparer l'IU qui ne répond pas après la fin de la session. Les demandes Ajax échouent à cause de la redirection HTTP 302 vers la page de connexion - l'erreur ajax est Could not find root <ajax-response> element.Comment réparer l'IU qui ne répond pas (échec des appels ajax) lorsque la session expire dans un guichet apache?

Je suis abonné à l'événement d'échec ajax:

Wicket.Event.subscribe('/ajax/call/failure', function(attrs, jqXHR, textStatus, jqEvent, errorThrown) { 
    handleAjaxCallFailure(attrs, jqXHR, textStatus, jqEvent, errorThrown); 
}); 

Mais je ne peux pas trouver un moyen raisonnable pour obtenir une réponse HTTP, le code de réponse ou autres en-têtes HTTP. J'ai également essayé:

$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) { 
    handleAjaxError(event, jqXHR, ajaxSettings, thrownError); 
}); 

Mais cela ne fonctionne pas du tout. J'utilise Apache Wicket 7.6.0. Existe-t-il un autre moyen de forcer l'utilisateur à se connecter à la page?

Répondre

0

Il doit y avoir une erreur sur la ligne.

Habituellement Wicket renverra une réponse Ajax appropriée (le XML) avec un seul élément dans <redirect>../the/path/to/login</redirect> et wicket-ajax-jqeury.js le traitera et fera la redirection.

De plus, il peut y avoir un en-tête de réponse nommé Ajax-Location que Wicket gère de la même manière.

Vérifiez les en-têtes et le corps de la réponse. Collez-les ici aussi!

+0

Je crois que le portillon n'obtiendra même pas la demande parce que le filtre de sécurité de ressort découvrira que la session est invalide et c'est pourquoi le navigateur obtient le HTTP 302 avec le corps vide et l'emplacement de redirection pointant vers la page de connexion. – viliam

+2

Merci @ martin-g, j'ai trouvé l'implémentation personnalisée de LoginUrlAuthenticationEntryPoint avec la stratégie de redirection personnalisée pour les appels ajax wicket. – viliam