2012-04-03 81 views
0

我的项目在struts1.2中。有没有在struts1.2中实现令牌拦截器(struts2)? 我知道它可以通过使用struts中的令牌拦截器1.2

  1. saveToken(HttpServletRequest req)
  2. isTokenValid(HttpServletRequest req)
  3. resetToken(HttpServletRequest req)

来实现,但我不希望在每一个动作在上面添加。

回答

2

我知道Struts2的但不是struts1中(所以,从这个角度这些解决方案的攻击,一个struts1中的人可能有关于一个更漂亮的解决了这个问题):

1)加春(如果它不存在已经)...使用AOP添加这些方法。 [成本:可能学习一项新技术]

2)在Struts1映射.action到struts2和.do到struts1上使用Struts2 ...创建一个可能被称为“token”并可能映射到/ token的struts2包采用通配符来捕捉你曾经投掷过的东西......这将转向struts1的行动。 PS:你问过它是如何完成的......这远非漂亮,我不会这样做。 [成本:映射逻辑复杂]

3)将所有内容转换为struts2并使用令牌拦截器。 [成本:高时间投入]

4)创建一个新的基本动作类,您的动作将扩展,实现这些方法。

+0

感谢Quaternion,因为我曾经用过春天我想用第一种解决方案 – Vipul 2012-04-03 17:50:02

0

如果你想在Struts 2中使用TokenInterceptor,你必须引用tokenSession拦截器。
必须在struts.xml中通过名称=“invalid.token”在特定操作中处理结果。
您在该页面上生成动作的页面必须写入s:标头中的令牌标记

1

拦截器在Struts 1上不存在,可以使用servlet过滤器。但请注意,不要控制HTTP GET请求上的令牌,以免拒绝所有请求。

Servlet Filters and Event Listeners

saveToken()对POST请求的所有请求和isTokenValid()resetToken()。