2012-10-05 150 views
1

我有以下控制方法:未經授權的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); 
} 

當我在授權角色AJAX調用仍然suceed不叫sendReq與用戶 - 回調onAJAXSuccess被調用,但response.message未定義。

+0

這是一個預期的行爲,你爲什麼不把錯誤控制器響應呢? – jtheman

+0

那麼這是否意味着'Authorize'屬性對於AJAX方法是無用的? – Zoka

+1

當我想起它時,服務器是否會響應正常的登錄頁面?這將解釋成功... – Zoka

回答

1

這是正確的行爲。 AJAX調用的success僅由服務器以200 OK響應的事實確定。您需要自行詢問回覆的回覆,以確保它符合您期望的格式。

例如:

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