未经授权的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. }