未经授权的AJAX请求成功

时间:2012-10-05 23:06:08

标签: asp.net-mvc-3 jquery

我有以下控制器方法:

[HttpPost]
[Authorize(Roles="some_role_actual_user_is_NOT_in")
public ActionResult AJAXMethod()
{
    return Json(new { message = "server message");
}

和带脚本的页面:

function sendReq()
{
    $.ajax({
        type: "POST",
        data: { somedata: "somedata" },
        url: "/Path/To/AJAXMethod",
        success: onAJAXSuccess,
        error: onAJAXError
    });
}


function onAJAXSuccess(response, status, xhr)
{
    alert("success: " + response.message);
    alert(status);
}

function onAJAXError(xhr,status,error)
{
    alert("error: " + status);
    alert(error);
}

当我使用不在授权角色的用户调用sendReq时,AJAX调用仍然处于调用状态 - 调用了回调onAJAXSuccess,但response.message未定义。

1 个答案:

答案 0 :(得分:1)

这是正确的行为。 AJAX调用的success仅由服务器以200 OK响应的事实确定。您需要自己询问返回的响应,以确保它符合您期望的格式。

例如:

if (typeof response.message != "undefined" && response.message != "") {
   // it worked
}
else {
    // didn't work || user did not have access.
}