未经授权的AJAX请求成功

我有以下控制器方法:

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

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

例如:

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