【问题标题】:Token interceptor in struts 1.2struts 1.2中的令牌拦截器
【发布时间】:2012-04-03 12:40:06
【问题描述】:

我的项目在struts1.2。 struts1.2中是否有实现Token拦截器(struts2)? 我知道它可以通过使用来实现

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

但我不想在每一个动作中都添加上面的内容。

【问题讨论】:

    标签: struts2 struts struts-1 struts-config struts-validation


    【解决方案1】:

    我知道 struts2 但不知道 struts1(所以这些解决方案从那个角度攻击,struts1 的人可能对这个问题有一个更漂亮的解决方案):

    1) 添加 Spring(如果还没有的话)...使用 AOP 添加这些方法。 [成本:可能学习一门新技术]

    2) 在 Struts1 旁边使用 Struts2 将 .action 映射到 struts2 并将 .do 映射到 struts1... 创建一个 struts2 包,可能称为“令牌”,并可能使用通配符映射到 /token 并使用适当的操作来捕获您抛出的任何内容在它...转发到 struts1 动作。 PS:你问它是怎么做到的......这远非漂亮,我不会这样做。 [成本:使映射逻辑复杂化]

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

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

    【讨论】:

    • 感谢 Quaternion,因为我使用过 spring,所以我想使用第一个解决方案
    【解决方案2】:

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

    Servlet Filters and Event Listeners

    saveToken() 用于所有请求,isTokenValid() resetToken() 用于 POST 请求。

    【讨论】:

      【解决方案3】:

      如果你想在 Struts 2 中使用 TokenInterceptor,你必须参考 tokenSession 拦截器。
      必须在特定操作中通过 struts.xml 中的 name="invalid.token" 处理结果。
      在该页面上生成您的操作的页面,您必须在标题中写入 s:token 标记

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-20
        • 2011-10-25
        • 2023-03-31
        • 2017-02-25
        • 1970-01-01
        • 2021-12-20
        相关资源
        最近更新 更多