2

На мой взгляд, у меня есть цикл, чтобы сделать список пользователей:Несколько Html.AntiForgeryToken (внутри HTML-таблицы)

foreach (var user in Model.Users.Collection) 
{} 

Один из столбцов этой таблицы кнопку ввода, чтобы выполнить какое-либо действие для конкретного пользователя. Кнопка ввода выполняет запрос POST к методу действия.

Я хотел бы защитить это с помощью Html.AntiForgeryToken. Однако каждая строка таблицы имеет Html.BeginForm с кнопкой ввода.

<td> 

      <% using(Html.BeginForm(user.IsInRole ? "RemoveUserFromRole" : "AddUserToRole", "usermanagement", FormMethod.Post)) { %>     
      <%: Html.AntiForgeryToken("AddRemoveUser") %> 
      <input name="action" type="submit" value="Update" /> 

      <% } %> 

      </td> 

Как мне это сделать? Render multiple Html.AntiForgeryToken по одному для каждого Html.BeginForm? Правильно ли это делать?

Благодаря

ответ

0

Вы можете использовать то же значение соли для всех маркеров.

<%: Html.AntiForgeryToken("some_random_string") %> 

, а затем вы можете попробовать применить эту же соль на два действия контроллера вы отправляете сообщение:

[ValidateAntiForgeryToken(Salt = "some_random_string")] 
+0

Если вы думаете о другом решении! Теперь эта соль стала устаревшей '' System.Web.Mvc.ValidateAntiForgeryTokenAttribute.Salt ' ' Свойство «Соль» устарело. Чтобы указать пользовательские данные, которые должны быть внедрены в токен, использовать свойство static AntiForgeryConfig.AdditionalDataProvider. ' ' – Bellash