Rails, возвращающий 401, приводит к раскрывающемуся окну авторизации http - PullRequest
0 голосов
/ 07 марта 2011

Я выполняю аутентификацию пользователя через пост-запрос Ajax в Rails, и я подумал, что возвращение статуса 401 и использование функции ошибки в jQuery.ajax () было бы хорошим способом обработки неудачных авторизаций.

Тем не менее: в Chrome, Safari и FireFox я получаю одно из этих стандартных http авторизационных окон http.Например: http://bayimg.com/PAENeAAdE (простите за шведский).

После нажатия кнопки "Отмена" в окне входа в систему моя функция обработки ошибок jQuery выполняется как обычно.

Есть ли способ предотвратитьэто окно входа в систему появляется?

Я использую WEBrick 1.3.1, Rails 3.0.1, Ruby 1.8.7.

Код:

application.js

var $form = $("#loginForm");
$form.submit(function(e) {
  e.preventDefault();
  $.ajax(
    $form.attr('action'), 
    {
      type: "POST",
      data: $form.serialize(), 
      dataType: "json",
      success: function(data) {
          console.debug(data);
          $("#login").append("Inloggningen lyckades!");
          var panel = ich.userPanel({"name":data.user.email});
          $("#header").html(panel);     
      },
      error: function(header, status, error){
        alert("I am handling errors");
      }
    })
})

session_controller.rb:

def create 
  user = User.authenticate(params[:email], params[:password])
  respond_to do |format|

    # Some misc html-stuff

    format.json {
      if user
        session[:email] = user.email
        render :json => user
      else
        render :json => "Fel lösenord eller adress.", :status => :unauthorized
      end
    }
  end
end

1 Ответ

1 голос
/ 07 марта 2011

Не возвращайте 401. 401 используется исключительно с аутентификацией http.

...