Я выполняю аутентификацию пользователя через пост-запрос 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