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
使用JQuery发布到ASP.NET MVC[Authenticate]-包装操作_Jquery_Asp.net Mvc_Authentication - Fatal编程技术网

使用JQuery发布到ASP.NET MVC[Authenticate]-包装操作

使用JQuery发布到ASP.NET MVC[Authenticate]-包装操作,jquery,asp.net-mvc,authentication,Jquery,Asp.net Mvc,Authentication,我试图用JQuery发布如下内容: $.post("NiceController/Create/", { field1: data1, field2: data2 }, function(data, textStatus) { if (data.Status) //Do something }, "json"); 问题是,当我没有经过身份验证时,我不会被重定向到登录页面,因为这不是一个完整的表单提交。问题是:通过编程,我如何知道我没有经过身份验证,应该重定向到登录页面?

我试图用JQuery发布如下内容:

$.post("NiceController/Create/", { field1: data1, field2: data2 },
function(data, textStatus) {
    if (data.Status)
        //Do something
}, "json");

问题是,当我没有经过身份验证时,我不会被重定向到登录页面,因为这不是一个完整的表单提交。问题是:通过编程,我如何知道我没有经过身份验证,应该重定向到登录页面?

您可以执行以下操作:

$.post("NiceController/Create/", { field1: data1, field2: data2 },
    function(data, textStatus) {
        if (data.Status)
            if(data.Status == 'authFailed') {
                window.location.href = '/login';
            }
        }
    }, "json");

我不知道是否有更正式的答案,但是你能不能先
$.get('NiceController/AmILoggedIn')
?然后,根据其中的响应,
$.post
或通过登录页面执行某种重定向?

如果使用该方法,您应该能够添加错误处理功能。我相信,既然您请求的是JSON,那么应该返回
parseerror
,因为您将得到的是重定向,而不是JSON。使用全局
ajaxError
处理程序并继续使用post,您可能也可以获得相同的效果。

我假设您的
NiceController/Create/
重定向到登录页面,这就是您看到的。从登录页面返回的不是一个好的状态,而是一堆HTML

您有两个选项:从创建操作中删除
Authorize
属性,并在内部处理它,例如通过返回JSON错误消息


或者:首先检查您是否已登录,然后仅当用户登录时调用创建操作

问题是,我无法使用生成的函数。firebug显示,出现了GET登录请求,但可能是在js或其他文件中,因为页面本身没有刷新。是的,这是一个解决方案,谢谢。我想知道,我是否还能在一个请求中完成它。