【问题标题】:Problems With Simple captcha简单验证码的问题
【发布时间】:2023-03-11 04:16:01
【问题描述】:

我有一个奇怪的问题。我在 Rails 应用程序的表单中使用简单的验证码。如果我在网页中使用一个验证码,我没有任何问题。但是我有一个在一个页面中使用三(3)个表单的场景,其中所有三个表单都有验证码。这样当我刷新页面时,三种形式的验证码数据是相等的。

当我们来到数据库时,一旦页面被加载,一个特定 id 的验证码值就会被创建,如果我们刷新页面而不使用验证码,则记录正在更新而不是创建另一条记录,如果我在两个选项卡中打开网页,如果我在第一页提交表单。它抛出一个异常,上面写着“无效的验证码”

谁能告诉我如何在单页中处理多个验证码。我正在使用 simple_captcha 插件。

提前致谢

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-plugins


    【解决方案1】:

    我看不出对一页使用多个验证码的任何意义。 (我假设您的两个表单将同时提交。)因为验证码的全部目的是避免自动提交表单。

    第二点是,我不确定您为什么要在一个页面中使用三个表单。您可以考虑使用一个表单并在控制器端相应地过滤识别参数。

    【讨论】:

      【解决方案2】:

      你能解释一下为什么需要新记录而不是更新(刷新页面时)。

      顺便说一句,simple_captcha 处理的一页上的多重表单也有同样的问题。我的问题是重复使用 simple_captcha 的方法show_simple_captcha。在这种情况下,它会导致重复的数据库插入。我对插件做了一些小改动来解决这个问题:

      # Line 73 in lib/simple_captcha/view_helpers.rb (in show_simple_captcha method)
      
      options[:field_value] = set_simple_captcha_data(simple_captcha_key, options[:code_type])
      

      改为:

      options[:field_value] = options[:multi] ? simple_captcha_key : set_simple_captcha_data(simple_captcha_key, options[:code_type])
      

      现在我使用show_simple_captcha(:multi => true) 来生成验证码而不会命中数据库:

      <!-- For first captcha on page -->
      <%= show_simple_captcha(:object => :foo) %>
      
      <!-- For next captchas on same page -->
      <%= show_simple_captcha(:object => :bar, :multi => true) %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-07
        • 1970-01-01
        相关资源
        最近更新 更多