Как отловить HttpAntiForgeryException в ASP.NET MVC - PullRequest
4 голосов
/ 20 июля 2009

Я использую AntiForgeryToken в моих формах ASP.NET MVC. Если я отключу куки в своем браузере и отправлю сообщение от, я получу следующее сообщение об ошибке:

Требуемый токен против подделки не был предоставлен или был недействительным.

Как я могу запретить показ этого сообщения? Я бы предпочел перенаправить пользователя на другую страницу.

Я активировал customErrors и включил этот HandleError в свой контроллер:

[HandleError(ExceptionType=typeof(HttpAntiForgeryException), View="Index")]
public class MyController : Controller
{
...
}

HandleError игнорируется.

У кого-нибудь есть решение?

Ответы [ 2 ]

1 голос
/ 22 июля 2009

у меня нормально работает :)

Я заметил, что вы указали представление ошибки как «Индекс» - возможно, есть ошибка в этом представлении, которая появляется только в этой ситуации ошибки? Атрибут HandleErrorAttribute будет отображать это представление «Индекс» без выполнения самого действия - если ваш метод действия «Индекс» устанавливает объекты в ViewData, на которые полагается представление, то ошибка не будет обработана должным образом, и вы получите уродливое выражение стр.

Если это не помогает, проверили ли вы обработку ошибок на других ошибках, чтобы она работала? Некоторые вещи, которые могут привести к тому, что ошибки не будут обработаны:

  1. В вашем web.config
  2. Ошибка по вашему мнению
  3. Ошибка в главной странице, используемой представлением.
0 голосов
/ 27 июля 2009

Я думаю, что смысл маркера защиты от подделки - просто сдерживать запросы, сделанные от имени аутентифицированного пользователя другим веб-сайтом. Поэтому, если вы можете законным образом получить доступ к форме без файлов cookie, это означает, что вы можете получить к ней доступ без проверки подлинности, поэтому не должно быть необходимости защищать ее от атак CSRF.

Я надеюсь, что кто-то исправит меня, если я ошибаюсь.

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