2009-07-31 8 views
6

Asp.Net MVCでクライアントサイドのajaxログインを実装しようとしています。私はこれをWebForms上でうまくセットアップしていましたが、MVCに移行した今、私はいくつかの問題を抱えています。Asp.Net MVCでクライアントサイドAjaxログインを実装する方法(Asp.Net Webformsのソリューションへのリンクはこちら)

あなたはAsp.Net Webフォームのクライアント側のAjaxログインのチュートリアルを希望する場合は、here見つけることができる - それがAspのために働いていない何らかの理由で...簡単に、A ++今

。ネットMVC。

ssa.login() (それに相当する:Sys.Services.AuthenticationService.login())を実行する場合を除いて、私はWebformsと全く同じチュートリアルを使用しました。

私は、onLoginComplete()関数とonError()関数の両方にアラートを持っています。 ssa.loginが呼び出される前に、同様に私は警告を持っていると右後...

function loginHandler() { 
    var username = $("#login_UserName").val(); 
    var password = $("#login_Password").val(); 
    var isPersistent = $("#login_RememberMe").attr("checked"); 
    var customInfo = null; 
    var redirectUrl = null; 
    // Log them in. 
    alert("try login"); 
    ssa.login(username, 
         password, 
         isPersistent, 
         customInfo, 
         redirectUrl, 
         onLoginComplete, 
         onError); 
    alert("made it here"); 
} 

最初の警告火災が、もう一つは関数が失敗していることを意味しません。

function(c, b, a, h, f, d, e, g) { 
    this._invoke(this._get_path(), "Login", false, { userName: c, password: b, createPersistentCookie: a }, Function.createDelegate(this, this._onLoginComplete), Function.createDelegate(this, this._onLoginFailed), [c, b, a, h, f, d, e, g]); 
} 

誰もが、それが失敗している理由のいずれかのアイデアを持っている:
ここで私はあなたを表示するためにAsp.Netアヤックスから引き出さ機能がですか?

答えて

6

これは、必要以上に複雑になっています。あなたがする必要があるのは、AJAX呼び出しでアカウント/ログインメソッドを呼び出すことだけです。認証サービスの複雑さは必要ありませんが、AJAX経由でログインしているかどうかを検出して、ビューではなくJSONを返すことが必要な場合があります。

function loginHandler() { 
    var username = $("#login_UserName").val(); 
    var password = $("#login_Password").val(); 
    var isPersistent = $("#login_RememberMe").attr("checked"); 
    var customInfo = null; 
    var redirectUrl = null; 
    // Log them in. 
    alert("try login"); 
    $.ajax({ 
     url : '<%= Url.Action("Login", "Account") %>', 
     type: 'post', 
     dataType: 'json', 
     data: { username: username, 
       password: password, 
       isPersistent: isPersistent, 
       }, 
     success: onLoginComplete, 
     error: onError 
    }); 
    alert("made it here"); // this will execute before the callback completes... 
} 
+0

うわー、私はそのハハを考えなかった。素晴らしいアイデア、ありがとう! AJAX経由でログインしているかどうかを確認する方法は? – Matt

+0

MVCは、HttpRequestBase、HttpContext.Request.IsAjaxRequestの拡張機能を提供します。 XMLHTTPRequestに設定されたX-HTTP-Requested-Withヘッダーがあるかどうかをチェックします。 – tvanfosson

関連する問題