#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.