Поведение AuthorizeAttribute в ASP.NET MVC, когда режим проверки подлинности установлен на Windows - PullRequest
1 голос
/ 19 декабря 2010

У меня есть контроллер, защищенный AuthorizeAttribute.Когда авторизация не проходит, я получаю только пустую страницу.Если я переопределяю OnAuthorization(), я вижу, что после вызова base.OnAuthorization() filterContext.Result имеет значение null (почему?).Если я переопределяю OnException() и устанавливаю точку останова, она никогда не срабатывает.Может кто-нибудь объяснить, как это должно работать?Как я могу сделать это перенаправить на указанную страницу?Где я могу ввести в журнал неудачных попыток авторизации (лучше не писать пользовательский фильтр)?Я использую MVC 3 RC1, если это важно.

1 Ответ

8 голосов
/ 19 декабря 2010

Вы хотите переопределить метод AuthorizeAttribute.HandleUnauthorizedRequest.Вот реализация по умолчанию:

protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
    // Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs.
    filterContext.Result = new HttpUnauthorizedResult();
}

Вместо этого вы захотите установить Result равным RedirectResult (или некоторому другому результату в зависимости от желаемой логики).Это также было бы хорошим местом для регистрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...