我的项目在struts1.2。struts1.2中是否有实现Token拦截器(struts2)?我知道它可以通过使用来实现
saveToken(HttpServletRequest req)
isTokenValid(HttpServletRequest req)
resetToken(HttpServletRequest req)
但我不想在每一个动作中添加以上内容。
我的项目在struts1.2。struts1.2中是否有实现Token拦截器(struts2)?我知道它可以通过使用来实现
saveToken(HttpServletRequest req)
isTokenValid(HttpServletRequest req)
resetToken(HttpServletRequest req)
但我不想在每一个动作中添加以上内容。
我知道 struts2 但不知道 struts1(因此这些解决方案从那个角度进行攻击,struts1 的人可能对这个问题有一个更漂亮的解决方案):
1)添加Spring(如果它不存在)...使用AOP添加这些方法。[成本:可能学习一项新技术]
2) 在 Struts1 旁边使用 Struts2,将 .action 映射到 struts2,将 .do 映射到 struts1... 创建一个 struts2 包,可能称为“token”,并可能使用通配符映射到 /token 并使用适当的操作来捕获你扔给它的任何东西。 .. 转发到 struts1 动作。PS:你问它是怎么做到的......这远非漂亮,我不会这样做。[成本:使映射逻辑复杂化]
3)将所有内容转换为struts2并使用令牌拦截器。[成本:高时间投入]
4)创建一个新的基本动作类,您的动作将扩展,实现这些方法。
Struts 1 上不存在拦截器,可以使用 servlet 过滤器。但注意不要控制 HTTP GET 请求上的令牌,以免拒绝所有请求。
所有请求的 saveToken() 和 POST 请求的 isTokenValid() resetToken()。
如果你想在 Struts 2 中使用 TokenInterceptor,你必须参考 tokenSession 拦截器。
必须在特定操作中通过 struts.xml 中的 name="invalid.token" 处理结果。
在该页面上生成您的操作的页面,您必须在标题中写入 s:token 标记