读书人

struts2 Token统制重复提交

发布时间: 2012-10-08 19:54:56 作者: rapoo

struts2 Token控制重复提交

1. 首先在提交的form表单加入<s:token></s:token>

2.修改struts.xml

?? <action name="user" class="com.awf.action.UserAction">
???<result>/addOK.jsp</result>


???<interceptor-ref name="defaultStack"></interceptor-ref>
???<interceptor-ref name="token"></interceptor-ref>
???<result name="invalid.token">/error.jsp</result>


??</action>

?

在form表单生成一个在存在session的一串字符,当提交时struts2会比较他们的值,如果相同说明没有重复提交,然后在清空session里这个值,若用户再次重复提交struts2会发现session里没有这个值,这是会转到?<result name="invalid.token">/error.jsp</result>页面

?

3.它的实现原理和struts1.2一样,只是这里用的是配置,以前struts1.2是这样做的:

? 在转向数据填写页面是的action中,this.saveToken(request);

?在处理提交数据的action中,

?if (this.isTokenValid(request)) {
???this.resetToken(request);//重置

//处理业务代码......
?????} else {
???this.saveToken(request);

?System.out.println("不能重复提交.....");
?????}

?

?

4.虽然用token方法可以控制提交,但是如果用户是恶意提交的,他完全可以在数据填写页面开始重复,这样就就可以产生不同的令牌值了,所以比较安全的方法还是用重定向.

读书人网 >软件架构设计

热点推荐