1

我有以下控制器方法:

[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未定义。

4

1 回答 1

1

这是正确的行为。AJAX 调用的success时间仅取决于服务器以 200 OK 响应的事实。您需要自己查询返回的响应,以确保它是您期望的格式。

例如:

if (typeof response.message != "undefined" && response.message != "") {
   // it worked
}
else {
    // didn't work || user did not have access.
}
于 2012-10-06T13:03:53.043 回答