Как получить значение токена для каждой сессии в 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

Если вам требуется что-то за сеанс, используйте сам сеанс. Токен предназначен для предотвращения атак повторного запроса. Так что просто иметь один на сеанс не имеет смысла.

Другие вопросы по тегам