Como faço para manter o Firefox solicitando nome de usuário / senha com HTTP Basic Auth com JQuery AJAX?

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

Pergunta

Eu estou escrevendo algumas funcionalidades dinâmica lado do navegador e usando HTTP Autenticação Básica para proteger alguns recursos. A experiência do usuário é muito importante e é altamente personalizado.

Aqui está um método de teste JQuery simples que, eventualmente, irá testar se um usuário tiver fornecido as credenciais certas em um formulário:

$(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 eles não têm permissão para acessar /private, no momento em que eles devem ver apenas a caixa de alerta. No entanto, no Firefox, um formulário de login fornecido pelo navegador aparece (para repetir com novas credenciais). Safari não fazer isso.

Queremos controlar completamente a experiência com formulários personalizados, fades, transições, etc. Como posso manter a caixa padrão do Firefox de ser mostrado? (Se isso vai ser um problema quando testar para o IE, eu adoraria ouvir soluções lá, também.)

Foi útil?

Solução

No caso de você não leu:

Como posso suprimir a autenticação do navegador de diálogo?

não parece muito promissor:)

Outras dicas

A solução é definir o cabeçalho WWW-Authenticate para algo diferente de Basic. Por exemplo configurá-lo para:

WWW-Authenticate: None

ou

WWW-Authenticate: FormBased

Se você usar formulário de login com base. Em seguida, o navegador não irá mostrar uma janela de login.

Infelizmente, eu estou batendo o mesmo problema aqui.

Na minha opinião, Browsers não deve dar um aviso para um XMLHttpRequest. Eu realmente gostaria que alguém empurrar que levam as pessoas estão realmente querendo passar para jQuery para suas necessidades de autenticação.

Bem, aqui é a ajuda que pode dar-lhe, eu achei essa coisa jQuery Digest, eu não tenho idéia do que ele realmente faz ou qualquer coisa, mas se alguém poderia tomar este código o caminho certo, poderíamos ter um jquery digerir auth sistema .

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

Eu acho que com esta opção AuthDigestDomain novo acessível, poderíamos ter o script acima reescrito ou o que quer e ter a área segura 'ligado' juntos e poderia ter passado este problema de uma vez por todas. Bem ... boa sorte =)

I encontrado em algum lugar uma solução deste problema de autenticação popup.

WWW-Authenticate: None

não funciona para mim, mas eu adicionei

'Authorization': 'Basic'

para os cabeçalhos e funciona como um encanto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top