0

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
4

1 に答える 1

1

401 を返さないでください。401 は、http 認証でのみ使用されます。

于 2011-03-07T15:50:03.837 に答える