`
qiezi
  • 浏览: 500182 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Rails项目防止表单重复提交

    博客分类:
  • Ruby
阅读更多
类似struts的token,使用session保存token,调用check_token后就把session里的token清掉,所以不能重复调用。

因为有些界面可能会有多个表单,这些表单最好共用同一个token,不然提交过来的token很难验证,所以这里做了处理,不会多次生成。

module ApplicationHelper
  def token_field
    hidden_field_tag(:__token__, (@__token__ ||= (session[:__token__] = 
        Digest::SHA1.hexdigest((Time.now.to_i + rand(0xffffff)).to_s)[0..39])))
  end
end


class ApplicationController < ActionController::Base
  def check_token
    if session[:__token__] == params[:__token__]
      session[:__token__] = nil
      session.update
      return true
    end
    false
  end
end


<%= form_tag(:controller => "test", :action => "test") %>
  <%= token_field %>
  <%= submit_tag "提交" %>
</form>


检查token:
#方法1:
class TestController < ApplicationController
  def test
    unless check_token
      return redirect_to("/")
    end
    #...
  end
end

#方法2:
class TestController < ApplicationController
  before_filter :check_token, : only => ["test"], : redirect_to => "/"

  def test
    #...
  end
end
分享到:
评论

相关推荐

    simple_form_unique:向简单表单输入添加“唯一”输入

    4. JavaScript接收到服务器响应后,可以在前端显示错误提示,阻止表单提交,直到用户输入了唯一的值。 在实际应用中,你需要将"simple_form_unique"集成到你的Rails项目中。这通常包括以下步骤: 1. 添加gem到...

    一个后台登陆(HTML模板).rar

    7. 安全实践:理解CSRF(跨站请求伪造)和XSS(跨站脚本攻击)等安全问题,并采取相应措施,如使用POST而非GET提交数据,防止密码明文传输,以及对用户输入进行过滤和转义。 8. 无障碍性:遵循Web Content ...

    网页中用户注册

    - 使用React、Vue、Angular等前端框架可以简化表单构建,例如使用Formik、Vuelidate等库进行表单验证。 - Material-UI、Bootstrap等组件库可以快速美化界面。 7. **后端处理**: - 使用Node.js、Django、Ruby on...

    用户注册页面

    - **输入验证**:前端需要对用户输入进行实时验证,例如检查邮箱格式是否正确,密码强度是否达标,防止无效数据提交。 - **反馈提示**:当用户输入错误时,需要即时显示错误信息,以便用户能够及时更正。 - **...

    html 后台框架代码

    4. 表单处理:包括验证、提交和回显等,简化客户端和服务器之间的交互。 5. 安全性:内置的安全机制,如防止XSS(跨站脚本攻击)和CSRF(跨站请求伪造)。 五、HTML后台框架的实际应用 HTML后台框架广泛应用于各种...

    LudivineEmeric.github.io

    7. **.gitignore** - 定义了在版本控制中应忽略的文件或目录,防止不必要的文件被提交到仓库。 8. **Gemfile** 或 **package.json** - 如果项目使用了Ruby on Rails或Node.js,这些文件会列出项目的依赖库。 9. **...

    22个PHP开源框架的比较

    - 自动表单处理:能够自动处理表单提交,简化了前端和后端的数据交互过程。 - ORM 支持:提供了对象关系映射(Object Relational Mapping)功能,使得数据库操作更加便捷。 - 内置安全性功能:具有内置的安全性...

    laravel框架与其他框架的详细对比

    Laravel的安全机制也非常完善,包括了对提交表单的数据验证,它提供了大约80种不同的验证规则,几乎覆盖了所有的常见需求。Laravel还采用了CSRF令牌来防止跨站请求伪造,增加了系统的安全性。 中间件和路由机制是...

    CodeIgniter:php敏捷开发框架web快速开发详解

    1.1.2.2 防止对数据库的攻击:对表单输入的数据进行校验和处理 数据输入可能引发许多问题。因为 HTML 和数据库的限制,数据中总包含特定的符号—举例来说,省略符号和引号—可能导致你的数据库遭到攻击,最终得到你...

Global site tag (gtag.js) - Google Analytics