Есть ли способ заставить AuthorizeAttribute отвечать кодом состояния 403 Запрещено, а не перенаправлять? - PullRequest
7 голосов
/ 19 января 2011

Если пользователь не вошел в систему и запросил действие, помеченное [Authorize], ответом будет перенаправление на действие «Учетная запись / вход в систему» ​​(код состояния 302 Найден).

Есть ли способ сделать ответ кодом состояния 403 Вместо этого Запрещено?

Ответы [ 2 ]

10 голосов
/ 20 января 2011

Создать фильтр действий, который наследуется от AuthorizeAttribute.Затем переопределите этот метод:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{ 
   Response.StatusCode = 403;
   Response.Status = "Forbidden";
   Response.StatusDescription = "Forbidden";
   Response.End();
   Response.Close();

}
0 голосов
/ 21 октября 2011

Если пользователь не вошел в систему, то более подходящий код состояния - 401: не авторизован. Это то, что AuthorizeAttribute возвращает по умолчанию.

FormsAuthenticationModule перехватит этот код возврата и преобразует его в перенаправление. Если вы можете отключить (или даже не загружать его), это будет возвращено вызывающей стороне.

...