我正在通过 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