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 に答える