【问题标题】:Rails: DEPRECATION WARNING: You didn't set config.secret_key_baseRails:弃用警告:您没有设置 config.secret_key_base
【发布时间】:2014-04-11 16:43:40
【问题描述】:

我在运行我的规范时收到此警告。是否有生成 secret_key_base 的最佳实践,或者任何字符串都足够(关于安全问题)?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    您可以从 3.x 或以前的版本升级到 Rails 4。

    首先生成一个随机秘钥值:

    $ bundle exec rake secret
    

    然后将那个值放入config/initializers/secret_token.rb

    YourApp::Application.config.secret_key_base = 'your-secret'
    

    YourApp 替换为您的应用程序名称。

    原因解释here

    另见http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml

    【讨论】:

    • 但是我在config/initializers/secret_token.rb: 没有secret_token.rb 我该怎么办,因为我收到了这个You must set config.secret_key_base in your app's config. 的错误我能做些什么来解决这个问题。
    • config/secrets.ymlguides.rubyonrails.org/…
    • 如果有人好奇,rake secret 只是(目前)在做puts SecureRandom.hex(64)
    • 这还需要在secret_token.rb 中完成吗?我收到了关于 secrets.yml 的混合信息
    • @OneHoopyFroo 它可以通过任何一种方式完成。您不必实现 secrets.yml,但它现在附带新的 Rails 4(.2+?) 安装,如果您使用它,您将摆脱 secret_token.rb 文件
    【解决方案2】:

    从 4.1 开始,您需要使用 config/secrets.yml 文件。这在http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml 中进行了讨论。

    【讨论】:

    • 实际上,在链接中,它说“如果你想使用新的 secrets.yml 约定来存储你的应用程序的秘密......”我没有看到任何说你需要的东西 到。 :)
    【解决方案3】:

    您只需在 config/initializers 目录中创建一个 secret_token.rb 文件。

    以下文件内容:

    YourAppNameHere::Application.config.secret_key_base = #type the key you generated with rake secret here
    

    然后保存文件

    close your server: 
    ctrl c
    
    restart it: rails s
    

    您现在将看到您在上一章中看到的基本 Rails 应用页面(如果您正在阅读 Hartl 的教程)

    【讨论】:

      【解决方案4】:

      如果您像我一样是菜鸟,请记住将 secret_key_base = 'whatever' 放在单引号内。不带引号的复制粘贴会报错:

      C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-4.0.8/lib/act ive_support/dependencies.rb:223:in `load': C:/Users/Jeff C/documents/rails_proje cts/first_app/config/initializers/secret_token.rb:1:语法错误,意外 tI DENTIFIER,期待 $end (SyntaxError)

      【讨论】:

      • 就是这样。有点令人困惑,因为 secrets.yml 只需要它后面的字符序列。
      【解决方案5】:

      在处理升级到 Rails 5Rails 4 应用程序时遇到同样的问题。

      我所要做的就是运行下面的命令来生成secret key

      bundle exec rake secret
      

      然后我将密钥添加到config/secret.yml 文件中:

      development:
        secret_key_base: 21bc6137d0496a2a11f4459a7c7deb4f782d223d41ee328934b2fe7a405a42ec63eb3829db67f0ec6a759e134ba0bb15dc2d01168b64d83efcf8d42b403ac8bd
      

      就是这样。

      我希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 2013-12-27
        • 1970-01-01
        • 1970-01-01
        • 2014-06-17
        • 2012-02-23
        • 1970-01-01
        • 1970-01-01
        • 2013-12-20
        • 1970-01-01
        相关资源
        最近更新 更多