草庐IT

javascript - How to implement a Client-side Ajax Login on Asp.Net MVC (A link to the solution for Asp.Net Webforms is in here)

coder 2024-12-23 原文

我正在尝试在 Asp.Net MVC 上实现客户端 ajax 登录。我以前在 WebForms 上设置得很好,但现在我已经转移到 MVC 上,这给我带来了一些麻烦。

如果您想要有关 Asp.Net Webforms 的客户端 Ajax 登录的教程,可以找到 here -- 简单,A++

现在...出于某种原因,它不适用于 Asp.Net MVC。

除了执行 ssa.login() 时,我使用了与 Webforms 完全相同的教程 (等效于:Sys.Services.AuthenticationService.login())它什么也没做。

我在 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");
}

第一个警报触发但第二个警报没有触发,这意味着该功能失败。
这是我从 Asp.Net Ajax 中提取的函数,向您展示:

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]);
}

有人知道它为什么会失败吗?

最佳答案

你让事情变得比它需要的更复杂。您需要做的就是使用 AJAX 调用调用您的帐户/登录方法。您不需要身份验证服务的复杂性,尽管您可能想要检测您是否通过 AJAX 登录并返回 JSON 而不是 View 。

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...
}

关于javascript - How to implement a Client-side Ajax Login on Asp.Net MVC (A link to the solution for Asp.Net Webforms is in here),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1210483/

有关javascript - How to implement a Client-side Ajax Login on Asp.Net MVC (A link to the solution for Asp.Net Webforms is in here)的更多相关文章

随机推荐