Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Asp.NETMVC上实现客户端Ajax登录(此处是指向Asp.NETWebForms解决方案的链接)_Javascript_Asp.net Mvc_Ajax_Authentication_Webforms - Fatal编程技术网

Javascript 如何在Asp.NETMVC上实现客户端Ajax登录(此处是指向Asp.NETWebForms解决方案的链接)

Javascript 如何在Asp.NETMVC上实现客户端Ajax登录(此处是指向Asp.NETWebForms解决方案的链接),javascript,asp.net-mvc,ajax,authentication,webforms,Javascript,Asp.net Mvc,Ajax,Authentication,Webforms,我正在尝试在Asp.NETMVC上实现客户端ajax登录。我以前在WebForms上设置的很好,但现在我转到MVC,这给我带来了一些麻烦 如果您想要一个关于Asp.NETWebForms客户端Ajax登录的教程,可以找到它——很简单,一个++ 现在。。。由于某些原因,它不适用于Asp.NETMVC 除了执行ssa.login() (相当于:Sys.Services.AuthenticationService.login())它什么也没做 我在onLoginComplete()函数和onError

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

如果您想要一个关于Asp.NETWebForms客户端Ajax登录的教程,可以找到它——很简单,一个++

现在。。。由于某些原因,它不适用于Asp.NETMVC

除了执行
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]);
}

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

你让它变得比需要的更复杂了。您所需要做的就是使用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...
}
函数loginHandler(){
var username=$(“#登录_用户名”).val();
var password=$(“#登录_密码”).val();
var isPersistent=$(“#login_RememberMe”).attr(“选中”);
var customInfo=null;
var redirectUrl=null;
//让他们登录。
警报(“尝试登录”);
$.ajax({
url:“”,
键入:“post”,
数据类型:“json”,
数据:{用户名:用户名,
密码:密码,
ispersist:ispersist,
},
成功:只有完成,
错误:onError
});
警报(“在此处生成”);//这将在回调完成之前执行。。。
}

哇,我从来没想过这个哈哈。好主意,谢谢!如何确定是否通过AJAX登录?MVC提供了对HttpRequestBase的扩展HttpContext.Request.IsAjaxRequest。它检查是否有一个X-HTTP-Requested-header设置为XMLHTTPRequest的文件。