未经授权AJAX请求成功(Unauthorized AJAX request succeeds)

2019-10-17 06:36发布

我有以下控制器的方法:

[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调用仍然suceed -回调onAJAXSuccess被调用,但response.message是不确定的。

Answer 1:

这是正确的行为。 在success的AJAX调用的是仅由服务器用200 OK回应的事实来确定。 您需要查询返回的响应自己,以确保它是否是你希望的格式。

例如:

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


文章来源: Unauthorized AJAX request succeeds