【问题标题】:Recaptcha rails 5 errorRecaptcha rails 5 错误
【发布时间】:2018-02-13 16:30:27
【问题描述】:

recaptcha 在生产环境中识别我在 secrets.yml 中的密钥时出错。在开发中,一切正常!

我能够使用 capistrano 和 nginx 成功上传我的网站,我将 recaptcha 密钥放在 secrets.yml 中,但我在 rails 日志中收到以下错误。

[70624ace-d7c2-41d4-a312-81e558237559] app/views/contacts/_new.html.erb:1:in `_app_views_contacts__new_html_erb___113748072819217608_34958780'
[70624ace-d7c2-41d4-a312-81e558237559] app/views/welcome/index.html.erb:97:in `_app_views_welcome_index_html_erb__2483501284442413835_31069860'
I, [2018-02-13T15:06:06.655443 #23369]  INFO -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f] Started GET "/" for 66.249.70.22 at 2018-02-13 15:06:06 +0000
I, [2018-02-13T15:06:06.656262 #23369]  INFO -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f] Processing by WelcomeController#index as HTML
I, [2018-02-13T15:06:06.657082 #23369]  INFO -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f]   Rendering welcome/index.html.erb within layouts/application
I, [2018-02-13T15:06:06.666156 #23369]  INFO -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f]   Rendered contacts/_new.html.erb (8.3ms)
I, [2018-02-13T15:06:06.666316 #23369]  INFO -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f]   Rendered welcome/index.html.erb within layouts/application (9.1ms)
I, [2018-02-13T15:06:06.666485 #23369]  INFO -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f] Completed 401 Unauthorized in 10ms
F, [2018-02-13T15:06:06.667938 #23369] FATAL -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f]
F, [2018-02-13T15:06:06.668014 #23369] FATAL -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f] ActionView::Template::Error (No site key specified.):
F, [2018-02-13T15:06:06.668157 #23369] FATAL -- : [1abb6e09-8ebd-41a3-ad0c-ea88749d804f]      9:

我正在尝试遵循本教程 https://github.com/ambethia/recaptcha,但它没有提供有关在生产中放置密钥的详细信息。

我尝试了很多方法,比如在密钥前面添加export,将它们放在不同的文件中,以及检查 secrets.yml 是否有任何语法错误。我还确定我使用的是RECAPTHCA_SITE_KEY 而不是RECAPTCHA_PUBLIC_KEY

另外,我已将我的域放在 recaptcha 的网站中。

如果您能帮助我解决问题并解释我为什么会出现错误,我将不胜感激。

这是我在生产中的 secrets.yml:

production:
  secret_key_base: ...SECRET_KEY...
  RECAPTCHA_SITE_KEY: "...SITE_KEY..."
  RECAPTCHA_PRIVATE_KEY: "...PRIVATE_KEY..."

谢谢!

【问题讨论】:

    标签: ruby-on-rails key recaptcha production ruby-on-rails-5.1


    【解决方案1】:

    您需要通过添加初始化文件config/initializers/recaptcha.rb 来配置recaptcha 以从secrets.yml 中提取密钥:

    # config/initializers/recaptcha.rb
    Recaptcha.configure do |config|
      config.site_key   = Rails.application.secrets[:RECAPTCHA_SITE_KEY]
      config.secret_key = Rails.application.secrets[:RECAPTCHA_PRIVATE_KEY]
      # Uncomment the following line if you are using a proxy server:
      # config.proxy = 'http://myproxy.com.au:8080'
    end
    

    【讨论】:

    • 谢谢!那行得通!您可以在该文件中分离开发和生产吗?现在它无法识别开发密钥。
    • 当然。我认为将您的开发密钥放在secrets.yml 的开发块中应该可以工作。或者,如果您只想将此初始化程序应用于生产环境,请将 Recaptcha.configure 块包装在 if Rails.env.production? 条件中。
    • 有道理!它以这种方式工作,但是在 recapthca.rb 中执行 if 循环会被认为是一种不好的做法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多