Estoy escribiendo algunas funcionalidades dinámicas del lado del navegador y utilizando HTTP Basic Auth para proteger algunos recursos. La experiencia del usuario es muy importante y está altamente personalizada.¿Cómo evito que Firefox solicite el nombre de usuario/contraseña con HTTP Basic Auth con JQuery AJAX?
Aquí es un método jQuery prueba sencilla que con el tiempo pondrá a prueba si un usuario ha suministrado las credenciales correctas en un formulario:
$(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;
});
});
Si no se les permite acceder a la /private
, en el momento en que no vean sólo la caja de alerta. Sin embargo, en Firefox, aparece un formulario de inicio de sesión provisto por el navegador (para volver a intentarlo con nuevas credenciales). Safari no hace esto.
Queremos controlar por completo la experiencia con formularios personalizados, fundidos, transiciones, etc. ¿Cómo puedo mantener el cuadro predeterminado de Firefox para que no se muestre? (. Si va a ser un problema cuando se prueba para IE, me gustaría saber las soluciones allí, también)
Tenga en cuenta el seguimiento en http://stackoverflow.com/questions/928967/can-i-coerce-apache-into-not-including-a-www-authenticate-header-for-failed-http. –