Sto scrivendo alcune funzionalità dinamiche lato browser e utilizzo dell'autenticazione di base HTTP per proteggere alcune risorse. L'esperienza dell'utente è molto importante e altamente personalizzata.Come posso impedire a Firefox di richiedere nome utente/password con HTTP Basic Auth con JQuery AJAX?
Ecco un metodo JQuery semplice test che alla fine metterà alla prova se un utente ha fornito le giuste credenziali in una forma:
$(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;
});
});
Se non sono autorizzati ad accedere /private
, nel momento in cui dovrebbe vedere solo il casella di avviso. Tuttavia, su Firefox viene visualizzato un modulo di accesso fornito dal browser (per riprovare con nuove credenziali). Safari non lo fa.
Vogliamo controllare completamente l'esperienza con moduli personalizzati, dissolvenze, transizioni, ecc. Come posso mantenere la casella predefinita di Firefox da mostrare? (. Se questo sarà un problema quando si prova per IE, mi piacerebbe sentire le soluzioni anche lì)
Annotare il follow-up all'indirizzo http://stackoverflow.com/questions/928967/can-i-coerce-apache-into-not-including-a--authenticate-header-for-failed-http. –