У меня есть действие JsonResult, которое требует аутентификации и особой роли
[Authorize(Roles = "User")]
public virtual JsonResult Cancel()
{
//...
}
Но когда, например, я выхожу и нажимаю на это действие с помощью jQuery ajax, я вижу, что код состояния равен 200, но это должно быть401.
$.ajax({
url: "/Cancel/",
type: "POST",
dataType: "text",
cache: false,
success: function (data, textStatus, xhr) {
alert(xhr.status); //200 here when unauthorized
}
});
Так что я действительно не могу выполнить логику контроллера, потому что она не авторизована, я проверил это при отладке, но почему я получаю код состояния 200 в jquery ajax?
ОБНОВЛЕНО:
В Fiddler говорится, что код состояния 302 , и я мог видеть, что запрос к /Acount/Login
был сделан после /Cancel
запроса.
/Cancel - 302
/Acount/Login - 200
В сети Chrome Код состояния: 302 Найдено , а также я мог видеть, что контроллер входа в систему (/Acount/Login
) вызывается после вызова /Cancel
.
/Cancel - 302
/Acount/Login - 200
Полная информация о запросе в Operaсеть
Может ли кто-нибудь объяснить, что происходит, почему jquery не получил правильный код статуса?
Действительно, что я хочу сделать - желание получить правильный код статуса, и если это 401
я хочу перенаправить пользователя на лogin page (window.location.href = " /Acount/Login"
)
Подробности запроса
POST /Cancel/ HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; en) Presto/2.9.168 Version/11.50
Host: localhost:999
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate
Referer: http://localhost:999/Action
Cookie: style=normalText; ASP.NET_SessionId=latzewpi3kqmkq4meljv0ln5
Connection: Keep-Alive
Content-Length: 0
Accept: text/plain, */*; q=0.01
X-Requested-With: XMLHttpRequest
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: binary
Детали ответа
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: /Account/LogOn?ReturnUrl=%2fCancel%2f
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 11 Aug 2011 03:04:53 GMT
Content-Length: 169