使用JQuery发布到ASP.NET MVC [Authenticate] -wrapped action

时间:2009-06-18 11:39:32

标签: jquery asp.net-mvc authentication

我正试图用这样的JQuery发布:

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

问题是,当我未经过身份验证时,我不会被重定向到登录页面,因为它不是完整的表单提交。问题是:我如何以编程方式知道我未经过身份验证并应重定向到登录页面?

4 个答案:

答案 0 :(得分:1)

我不知道是否有更正式的答案,但您可以先$.get('NiceController/AmILoggedIn')吗?然后,根据那里的响应,$.post或通过登录页面进行某种重定向?

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

您可以执行以下操作:

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