Как реализовать Ajax-вход на стороне клиента в Asp.Net MVC (ссылка на решение для Asp.Net Webforms находится здесь) - PullRequest
6 голосов
/ 31 июля 2009

Я пытаюсь реализовать клиентскую регистрацию ajax на Asp.Net MVC. Раньше я настраивал это на WebForms, но теперь, когда я перешел на MVC, это доставляет мне некоторые неприятности.

Если вам нужно руководство по Ajax-входу на стороне клиента для веб-форм Asp.Net, его можно найти здесь - Easy, A ++

Теперь ... по какой-то причине он не работает для Asp.Net MVC.

Я использовал тот же учебник, что и для вебформ, за исключением случаев, когда он выполняет ssa.login() (эквивалентно: 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]);
}

Кто-нибудь имеет представление о том, почему он терпит неудачу?

1 Ответ

6 голосов
/ 31 июля 2009

Вы делаете это сложнее, чем нужно. Все, что вам нужно сделать, это вызвать вашу учетную запись / метод входа с помощью вызова 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...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...