【发布时间】:2014-04-11 16:43:40
【问题描述】:
我在运行我的规范时收到此警告。是否有生成 secret_key_base 的最佳实践,或者任何字符串都足够(关于安全问题)?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4
我在运行我的规范时收到此警告。是否有生成 secret_key_base 的最佳实践,或者任何字符串都足够(关于安全问题)?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4
您可以从 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.yml和guides.rubyonrails.org/…
rake secret 只是(目前)在做puts SecureRandom.hex(64)
secret_token.rb 中完成吗?我收到了关于 secrets.yml 的混合信息
secrets.yml,但它现在附带新的 Rails 4(.2+?) 安装,如果您使用它,您将摆脱 secret_token.rb 文件
从 4.1 开始,您需要使用 config/secrets.yml 文件。这在http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml 中进行了讨论。
【讨论】:
您只需在 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 的教程)
【讨论】:
如果您像我一样是菜鸟,请记住将 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 只需要它后面的字符序列。
在处理升级到 Rails 5 的 Rails 4 应用程序时遇到同样的问题。
我所要做的就是运行下面的命令来生成secret key:
bundle exec rake secret
然后我将密钥添加到config/secret.yml 文件中:
development:
secret_key_base: 21bc6137d0496a2a11f4459a7c7deb4f782d223d41ee328934b2fe7a405a42ec63eb3829db67f0ec6a759e134ba0bb15dc2d01168b64d83efcf8d42b403ac8bd
就是这样。
我希望这会有所帮助
【讨论】: