Comment puis-je garder Firefox invite l'utilisateur à nom d'utilisateur / mot de passe avec HTTP Basic Auth avec JQuery AJAX?
-
06-09-2019 - |
Question
J'écris une fonctionnalité dynamique côté navigateur et en utilisant HTTP Basic Auth pour protéger certaines ressources. L'expérience utilisateur est très important et très personnalisé.
Voici une méthode JQuery de test simple qui permettra de tester éventuellement si un utilisateur a fourni les informations d'identification droite sous une forme:
$(document).ready(function() {
$("#submit").click(function() {
var token = Base64.encode($('#username').val() + ':' + $('#password').val());
$.ajax({
url: '/private',
method: 'GET',
async: false,
beforeSend: function(req) {
req.setRequestHeader('Authorization', 'test:password');
},
error: function(request, textStatus, error) {
if (request.status == 401) {
alert('401');
}
}
});
return false;
});
});
S'ils ne sont pas autorisés à accéder /private
, au moment où ils devraient voir juste la zone d'alerte. Cependant, sur Firefox, un formulaire de connexion navigateur fourni apparaît (pour une nouvelle tentative avec de nouvelles références). Safari ne le fait pas.
Nous voulons contrôler complètement l'expérience avec des formulaires personnalisés, des fondus, des transitions, etc. Comment puis-je conserver la boîte par défaut de Firefox d'être montré? (Si ce sera un problème lorsque nous testons pour IE, j'aimerais entendre là des solutions, aussi.)
La solution
Si vous avez lu pas:
Comment puis-je supprimer la boîte de dialogue d'authentification du navigateur?
ne semble pas trop prometteur:)
Autres conseils
La solution est de mettre l'en-tête de WWW-Authenticate
autre chose que Basic
. Par exemple fixé à:
WWW-Authenticate: None
ou
WWW-Authenticate: FormBased
si vous utilisez la connexion par formulaire. Ensuite, le navigateur ne vous affichera une fenêtre de connexion.
Unfortunatly, je frappais la même question ici.
À mon avis, les navigateurs ne devrait pas donner une invite pour un XMLHttpRequest. Je souhaite vraiment que quelqu'un pousser que les gens de cause sont vraiment désireux de passer à jQuery pour leurs besoins auth.
est bien ici l'aide que je peux vous donner, je l'ai trouvé cette chose jQuery Digest, je ne sais pas ce qu'il fait vraiment ou quoi que ce soit, mais si quelqu'un pourrait prendre ce code dans le bon sens, nous pourrions avoir un jquery digérer système auth .
https://www.openhub.net/p/digestj
Je pense avec cette nouvelle option AuthDigestDomain pratique, nous pourrions avoir le script ci-dessus réécrite ou autre chose et avoir la zone sécurisée « liée » ensemble et nous pourrions franchir ce problème une fois pour toutes. Eh bien ... bonne chance =)
J'ai trouvé quelque part une solution de ce problème popup d'authentification.
WWW-Authenticate: None
ne fonctionne pas pour moi, mais j'ai ajouté
'Authorization': 'Basic'
pour les en-têtes et il fonctionne comme un charme.