Как мне запретить Firefox запрашивать имя пользователя / пароль с помощью HTTP Basic Auth с помощью jQuery AJAX?

StackOverflow https://stackoverflow.com/questions/928874

Вопрос

Я пишу некоторые динамические функции на стороне браузера и использую HTTP Basic Auth для защиты некоторых ресурсов.Пользовательский опыт очень важен и в высшей степени индивидуализирован.

Вот простой тестовый метод jQuery, который в конечном итоге проверит, предоставил ли пользователь правильные учетные данные в форме:

$(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;
  });
});

Если им не разрешен доступ /private, на данный момент они должны видеть только окно предупреждения.Однако в Firefox появляется форма входа в систему, предоставляемая браузером (для повторной попытки с новыми учетными данными).Safari этого не делает.

Мы хотим полностью контролировать работу с пользовательскими формами, затуханиями, переходами и т.д.Как я могу запретить отображение поля Firefox по умолчанию?(Если это будет проблемой при тестировании для IE, я бы тоже хотел услышать решения там.)

Это было полезно?

Решение

На случай, если вы этого еще не читали:

Как я могу отключить диалоговое окно аутентификации браузера?

Выглядит не слишком многообещающе :)

Другие советы

Решение состоит в том, чтобы установить WWW-Authenticate заголовок к чему-то другому, чем Basic.Например, установите для него значение:

WWW-Authenticate: None

или

WWW-Authenticate: FormBased

если вы используете логин на основе формы.Тогда браузер не покажет вам окно входа в систему.

К сожалению, здесь я сталкиваюсь с той же проблемой.

На мой взгляд, браузеры не должны выдавать запрос на xmlhttprequest.Я действительно хотел бы, чтобы кто-нибудь настаивал на этом, потому что люди действительно хотят перейти на jQuery для своих нужд аутентификации.

Что ж, вот помощь, которую я могу вам оказать, я нашел эту штуку с jQuery Digest, я понятия не имею, что она на самом деле делает или что-то в этом роде, но если бы кто-нибудь мог правильно использовать этот код, у нас могла бы быть система аутентификации jquery digest.

https://www.openhub.net/p/digestj

Я бы подумал, что с помощью этой удобной новой опции AuthDigestDomain мы могли бы переписать приведенный выше скрипт или что-то еще и "связать" защищенную область вместе, и мы могли бы решить эту проблему раз и навсегда.Что ж...желаю удачи =)

Я где-то нашел обходной путь этой всплывающей проблемы с аутентификацией.

WWW-Authenticate: None

у меня это не работает, но я добавил

'Authorization': 'Basic'

к заголовкам, и это работает как по волшебству.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top