0

我正在通过 Rails 中的 Ajax 后请求进行用户身份验证,我认为返回 401 状态并在 jQuery.ajax() 中使用错误函数将是处理失败授权的好方法。

但是:在 Chrome、Safari 和 FireFox 中,我得到了其中一个标准的 http auth 登录窗口。像这样:http ://bayimg.com/PAENeAAdE (请原谅瑞典语)。

在登录窗口中单击取消后,我的 jQuery 错误处理函数照常执行。

有什么方法可以防止出现登录窗口吗?

我正在使用 WEBrick 1.3.1、Rails 3.0.1、Ruby 1.8.7。

代码:

应用程序.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
4

1 回答 1

1

不要返回 401。401 专门用于 http 身份验证。

于 2011-03-07T15:50:03.837 回答