zoukankan      html  css  js  c++  java
  • 关于指令牌一个有趣的帖子

    基本原理:

    服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。

    找一般的流程中插入个中间的action

    多写一个actionnonoaction

    nonoaction

    this.saveToken(request); //设置指令牌

    return 跳转到执行逻辑功能的action中如doaction

    执行业务功能的action doaction

    doaction

    ......

    if(this.isTokenValid(request)) //如果指令牌相同

    {.....

    ...实现功能的代码

    this.resetToken(request);//取消指令牌

    }else //执行else说明提交是重复提交

    {

    可以跳转回首页.并报错 如写

    ActionMessages errors= new ActionMessagers();

    errors.add(“token”,new ActionMessages(“token”)); //可以把错误信息写在资源文件中 然后显示

    this.saveErrors(return.errors); //保持错误信息

    跳转….

    }

  • 相关阅读:
    JavaScript 知识
    Sleep,Hibernate and Hybrid
    CentOS 7 休眠系统
    centos7如何添加开机启动服务/脚本
    linux下执行.sh文件的方法和语法
    systemctl命令
    linux 更新yum源 改成阿里云源
    Supervisor进程管理&开机自启
    Django中的Request和Response
    ORACLE 触发器
  • 原文地址:https://www.cnblogs.com/redcoatjk/p/3562417.html
Copyright © 2011-2022 走看看