美文网首页
Struts2防止自动提交--令牌token

Struts2防止自动提交--令牌token

作者: 蘋果_283e | 来源:发表于2017-04-15 10:24 被阅读0次

    原因

    一、重复提交 ,应该想到两种场景:

    1. 在下单,或者支付 这种情况 那么不允许  刷新,不允许后退再点击提交(后退之后提交会失败,修改了也不行)。

    2. 在填写表单之后,提交完成之后,不允许 刷新,但是允许 返回之后 提交,给用户修改表单的机会。

    二、工作原理

    在服务器端生成一个唯一的随机标识号,专业术语称为Token(令牌),同时在当前用户的Session域中保存这个Token。

    - 将Token发送到客户端的Form表单中,在Form表单中使用隐藏域来存储这个Token,表单提交的时候连同这个Token一起提交到服务器端。

    - 在服务器端判断客户端提交上来的Token与服务器端生成的Token是否一致,如果不一致,那就是重复提交了,此时服务器端就可以不处理重复提交的表单。如果相同则处理表单提交,处理完后清除当前用户的Session域中存储的标识号。

    (空了就不匹配了)

    1、开发步骤

    (1)jsp页面写上<%@ taglib uri="/struts-tags" prefix="s" %><s:token />//要在form范围中

    (2)struts.xml配置

    <action name="user" class="com.struts2.action.UserAction">

    <!-- 令牌拦截器1 -->

    <!--启用默认拦截器 ,开发令牌的第2步 -->

    <interceptor-ref name="defaultStack" />

    <!--启用自定义拦截器 ,开发令牌的第3步 -->

    <interceptor-ref name="token">

    <!-- 只拦截add方法 -->

    <param name="includeMethods">add</param>

    <!--只对add方法拦截

    excludeMethods表示排除指定的方法,即不对标记为excludeMethods的方法进行拦截,

    includeMethods表示包含指定的方法,即对标记为includeMethods的方法进行拦截,

    -->

    </interceptor-ref>

    <!-- 拦截后显示的页面不能在web-info下,不需要则不设置(token.jsp或) -->

    <result name="invalid.token" type="redirect">/user/user!list.action<result>

    <!--避免重复-->

    .....result....</action>

    相关文章

      网友评论

          本文标题:Struts2防止自动提交--令牌token

          本文链接:https://www.haomeiwen.com/subject/ldrnattx.html