RailsでAjaxのポストリクエストを介してユーザー認証を行っています。401ステータスを返し、jQuery.ajax()でエラー関数を使用すると、失敗した認証を処理するための優れた方法になると思いました。
ただし、Chrome、Safari、FireFoxでは、これらの標準のhttp認証ログインウィンドウの1つを取得します。このように:http://bayimg.com/PAENeAAdE(スウェーデン人を許してください)。
ログインウィンドウで[キャンセル]をクリックすると、jQueryエラー処理関数が通常どおり実行されます。
そのログインウィンドウが表示されないようにする方法はありますか?
WEBrick 1.3.1、Rails 3.0.1、Ruby1.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