浏览 5922 次
锁定老帖子 主题:Rails项目防止表单重复提交
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-07
因为有些界面可能会有多个表单,这些表单最好共用同一个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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |