如何在struts2中拥有每会话令牌值

时间:2013-10-02 13:49:28

标签: struts2 csrf interceptor

如何在struts2中的有效会话期间拥有持久性令牌值(或表单键)? 当<s:token/>在表单中时,在提交表单后,令牌的值会发生变化。它导致此问题,用户无法打开2浏览器选项卡并使用它们(由于每个表单的令牌的唯一值,只有一个选项卡处于活动状态)。 我如何使用struts2解决这个问题并且每个会话具有持久的令牌值(不是每个表单)

  

我认为覆盖拦截器可以解决问题,但我想   考虑其他选择

2 个答案:

答案 0 :(得分:0)

Don't use token at all

如果每个会话需要一些内容,请使用会话本身。令牌旨在防止请求重播攻击。所以每个会话只有一个没有意义。

答案 1 :(得分:0)

我也有同样的问题,在我的功能中有预览,在新标签页中打开。用户可以多次预览,因此它会抛出一个令牌异常。在我写的函数开头我有一个代码:

String downloadTokenName = TokenHelper.getTokenName();
String downloadToken = TokenHelper.getToken(downloadTokenName);

在最后的函数结束时,我将标记值重新分配为:

TokenHelper.setSessionToken(downloadTokenName, downloadToken);

它解决了我的问题。