Как получить значение токена для каждой сессии в struts2
Как мы можем иметь постоянное значение токена (или Ключ формы) во время действительного сеанса в Struts2? когда <s:token/>
находится в формах, после отправки формы значение токена изменяется. Это приводит к тому, что пользователи не могут открыть вкладку 2 браузера и работать с ними (активна только одна вкладка из-за уникального значения токенов для формы). Как я могу решить эту проблему с Struts2 и иметь длительное значение токена за сеанс (не для формы)?
Я думаю, что переопределение перехватчика может решить проблему, но я хочу рассмотреть другие варианты
2 ответа
У меня тоже была такая же проблема, в моей функциональности есть превью, которое открывается в новой вкладке. Пользователь может просматривать несколько раз, поэтому он выдавал исключение токена. Я получил один код, как в начале функции я написал:
String downloadTokenName = TokenHelper.getTokenName();
String downloadToken = TokenHelper.getToken(downloadTokenName);
В конце функции в конце я переназначаю значение токена как:
TokenHelper.setSessionToken(downloadTokenName, downloadToken);
Это решило мою проблему.
Don't use token at all
Если вам требуется что-то за сеанс, используйте сам сеанс. Токен предназначен для предотвращения атак повторного запроса. Так что просто иметь один на сеанс не имеет смысла.