2010-02-10 2 views
4

Неужели кому-то приходилось иметь дело с несколькими AntiForgeryTokens на дочернем представлении главной страницы? Сценарий, о котором я думаю, выглядит следующим образом:Несколько AntiForgeryTokens на просмотр с MasterPage

  • Вид содержит форму с AntiForgeryToken, отображаемую как скрытое поле.
  • Представление содержится на главной странице с другой формой, поданной AJAX.

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

Моя первая мысль заключается в том, чтобы сделать единую глобальную AntiForgeryToken для всей страницы, используемую всеми сообщениями, но тогда формы не будут публиковать токен, так как скрытое поле ввода будет расположено вне формы.

Спасибо за любой совет!

ответ

8

Должно быть возможно визуализировать Html.AntiForgeryToken() отдельно в каждой форме. Среда выполнения разработана с учетом этого сценария. Первый вызов AntiForgeryToken() устанавливает флаг: «Я установил токен, любые другие вызовы для этого запроса должны использовать одно и то же значение токена».

Смежные вопросы