J'essaye d'implémenter la connexion asynchrone à la webapp JEE6 en utilisant javascript et XMLHttpRequest. Je devrais être en mesure de faire un appel asynchrone avec XMLHttpRequest à/app/j_security_check et analyser la réponse d'une manière ou d'une autre afin que je puisse montrer à l'utilisateur une boîte de dialogue avec "Login Failed" ou "Login success". J'utilise Glassfish 3.1.1.Connexion asynchrone de l'application web Java EE dans Glassfish 3.1.1
Quelque chose que j'ai essayé, mais la réponse est toujours nulle. J'ai un login.jsp qui détient le formulaire de connexion et le script suivant:
function submitLogin(formName) {
var urlAction = "/app/j_security_check";
var client;
var dataString;
if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari
client = new XMLHttpRequest();
} else { // IE6, IE5
client = new ActiveXObject("Microsoft.XMLHTTP");
}
client.onreadystatechange = function() {
var response = client.responseText; // this is always null
/* ALERT THE DIALOG HERE ACCORDING TO RESPONSE? */
};
var form = document.forms[formName];
var username = form.elements["j_username"].value;
var password = form.elements["j_password"].value;
dataString = "j_username=" + username + "&j_password=" + password;
client.open("POST", urlAction, true);
client.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
client.send(dataString);
}
Ma question est, est-ce possible et comment le mettre en œuvre?
Editer: Le problème ici semble provenir de la redirection que Java Security applique après une connexion réussie/échouée. Il semble toujours rediriger la page, peu importe ce que je fais avec javascript. J'ai également essayé les méthodes ajax de jQuery sans succès.
Cela ne semble pas fonctionner. La page redirige toujours après la connexion et je ne peux pas sembler faire quoi que ce soit à ce sujet dans le Javascript natif ou jQuery. –
@Antionio Pouvez-vous mettre à jour votre question avec ce que vous avez essayé? Avez-vous ajouté 'if (client.readyState == 4) { if (client.status == 200) {' dans la méthode 'onreadystatechange' comme je le suggère? –
Nous avons effectivement abandonné l'idée et sommes allés sans connexion asynchrone. –