使用JQuery发布到ASP.NET MVC[Authenticate]-包装操作
我试图用JQuery发布如下内容:使用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"); 问题是,当我没有经过身份验证时,我不会被重定向到登录页面,因为这不是一个完整的表单提交。问题是:通过编程,我如何知道我没有经过身份验证,应该重定向到登录页面?
$.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或其他文件中,因为页面本身没有刷新。是的,这是一个解决方案,谢谢。我想知道,我是否还能在一个请求中完成它。