Проблема сеанса MVC 2 Antiforgerytoken

#asp.net-mvc-2 #antiforgerytoken #sessionend

#asp.net-mvc-2 #защита от подделок #завершение сеанса

Вопрос:

Я внедрил защиту от подделок в свое приложение MVC 2.
Я также добавил машинный ключ в web.config . Когда сеанс истекает, и я пытаюсь опубликовать сообщение, оно выдает A required anti-forgery token was not supplied or was invalid ошибку.
Похоже, что токен защиты от подделки истекает.

Мой вопрос в том

  • Почему он выдает ошибку после истечения срока действия сеанса?
  • Как долго действует токен?

Ответ №1:

Я никогда не сталкивался с такой проблемой, и я почти уверен, что срок действия AntiForgeryToken не истекает, но я читал здесь, и кажется, что у кого-то была ваша проблема.

Я не использую машинный ключ. Я просто делаю что-то вроде этого:

 <% using(Html.Form("UserProfile", "SubmitUpdate")) { %>
    <%= Html.AntiForgeryToken("AF-MyApp-token") %>
    <!-- rest of form goes here -->
<% } %>
  

и на стороне сервера:

 [ValidateAntiForgeryToken(Salt="AF-MyApp-token")]
public ViewResult SubmitUpdate()
{
    // ... etc
}
  

Комментарии:

1. Это очень расстраивает, поскольку вы мало что можете испортить, внедрив токены защиты от подделки в свое приложение. Прав ли я, полагая, что вы просто добавляете machinekey в свой web.config, и они будут автоматически использовать его?

2. @doogdeb: Я обновил свой ответ. Я черпал вдохновение отсюда: blog.stevensanderson.com/2008/09/01 /…

3. Я уже рассматривал это решение раньше, но у меня все еще была та же проблема. Также мое приложение будет развернуто на веб-ферме, поэтому я пошел по маршруту machinekey.

4. @doogdeb: Как я уже сказал, я не испытывал ничего подобного. Но, в любом случае, в статье, которую написал Джеймскроули (см. Ссылку в моем ответе), есть решение для этого.

5. Firefox сообщает, что срок действия куки-файла RequestVerificationToken_Lw истекает в конце сеанса. Я тестировал это в MVC3, но предполагаю, что это поведение соответствует MVC2.