我们如何在 struts2 的有效会话期间拥有持久的令牌值(或表单密钥)?当<s:token/>
在表单中时,提交表单后,令牌的值会发生变化。这导致用户无法打开 2 个浏览器选项卡并使用它们(由于令牌在每个表单中的唯一值,只有一个选项卡处于活动状态)。如何使用 struts2 解决这个问题并在每个会话中拥有持久的令牌值(不是每个表单)?
我认为覆盖拦截器可以解决问题,但我想考虑其他选项
我们如何在 struts2 的有效会话期间拥有持久的令牌值(或表单密钥)?当<s:token/>
在表单中时,提交表单后,令牌的值会发生变化。这导致用户无法打开 2 个浏览器选项卡并使用它们(由于令牌在每个表单中的唯一值,只有一个选项卡处于活动状态)。如何使用 struts2 解决这个问题并在每个会话中拥有持久的令牌值(不是每个表单)?
我认为覆盖拦截器可以解决问题,但我想考虑其他选项
Don't use token at all
如果每个会话都需要某些东西,请使用会话本身。令牌旨在防止请求重放攻击。因此,每次会话仅具有一个是没有意义的。
我也有同样的问题,在我的功能中有在新标签页中打开的预览。用户可以多次预览,所以它抛出了一个令牌异常。在我写的函数开始时,我得到了一个代码:
String downloadTokenName = TokenHelper.getTokenName();
String downloadToken = TokenHelper.getToken(downloadTokenName);
在最后的函数结束时,我将令牌值重新分配为:
TokenHelper.setSessionToken(downloadTokenName, downloadToken);
它解决了我的问题。