Struts的Token(令牌)机制

来源:互联网 发布:淘宝一件代发在哪里找 编辑:程序博客网 时间:2024/06/04 20:01

1、Struts 使用Token 机制,来防止恶意的破坏和重复提交问题,也就是点击后退后在再提交,这是Struts 无法发现的,在 form 中生成一个token 码,在session 中也保存有一个同样的token 码,当表单提交后,判断两个 token码相等后,就会改变session中的这个token 码,当然在用回退后,form 的token 码是不会变的,在提交,还会判断两个token 码是否相等,如果不等就会抛出异常,证明这是过时的垃圾数据。

2、方法:

(1)voidsaveToken(HttpServletRequest request)方法用于将在客户端生成的token 码,保存在session 中。

(2)voidresetToken(HttpServletRequest request)方法用于重置token 码,生成新的token 码。

(3)booleanisTokenValid(HttpServletRequest request,boolean reset)判断token 码是否相等,并且是否重置token 码。reset 是设定是否重置token 码,一般设为true。

3、设置token 码

public ActionForwardtoadd(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)throwsException{

saveToken(request);

return mapping.findForward("next");

}

4、验证token 码

publicActionForward add(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)throwsException{

if(isTokenValid(request, true)){

request.setAttribute("message","contratulation!");

} else {

request.setAttribute("message", "sorry");

}

return mapping.findForward("next");

}

 

原创粉丝点击