Rails 6 secret_key_base 对比 secret_token
Rails 6 secret_key_base vs secret_token
这可能是一个幼稚的问题,但我是 Ruby 的新手,非常感谢任何指导。
我正在努力升级我的应用程序以使用 Rails 6
我的secret_token.rb目前有
MyApp::Application.config.secret_token = ENV['SECRET_TOKEN'] || SecureRandom.hex(128)
https://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml 说“使用 secret_token.rb 初始值设定项中现有的 secret_key_base 为 运行 [=33] 的任何用户设置 SECRET_KEY_BASE 环境变量=] 在生产中的应用。"
我没有看到 secret_key_base 在任何地方被设置。 config.secret_key_base 是 config.secret_token 的重命名版本吗,我可以像这样在 secrets.yml 文件中设置 ENV['SECRET_TOKEN']
production:
secret_key_base: ENV['SECRET_TOKEN']
您的 secrets.yml
文件在 Rails 6 中将不再有效。相反,您将拥有一个加密的凭据文件。
您可以使用 rails credentials:edit
创建文件。您将看到一条错误消息,其中包含基于您的编辑软件的建议命令。剪切并粘贴建议。
您将在此处存储所有 keys/tokens/etc。
您可以使用 Rails.application.credentials.secret_token
或 Rails.application.credentials.aws[:secret_access_token]
访问它们
根据您上面的评论,听起来您需要将 config.secret_token
更改为 config.secret_key_base
,并将其设置为等于您的 secret_key_base 变量,如下所示:
YourApp::Application.config.secret_key_base = Rails.application.credentials.dig(Rails.env.to_sym, :secret_key_base)
这假定您的 credentials.yml.enc
文件具有以下设置:
production:
secret_key_base: a;sodkfjas;odkjfa;sodkjf
development:
secret_key_base: pqweiurwoeiurwopeiruowu
aws:
secret_access_token: mncMXncXMnc>KMXnc>KNc
这可能是一个幼稚的问题,但我是 Ruby 的新手,非常感谢任何指导。 我正在努力升级我的应用程序以使用 Rails 6
我的secret_token.rb目前有
MyApp::Application.config.secret_token = ENV['SECRET_TOKEN'] || SecureRandom.hex(128)
https://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml 说“使用 secret_token.rb 初始值设定项中现有的 secret_key_base 为 运行 [=33] 的任何用户设置 SECRET_KEY_BASE 环境变量=] 在生产中的应用。"
我没有看到 secret_key_base 在任何地方被设置。 config.secret_key_base 是 config.secret_token 的重命名版本吗,我可以像这样在 secrets.yml 文件中设置 ENV['SECRET_TOKEN']
production:
secret_key_base: ENV['SECRET_TOKEN']
您的 secrets.yml
文件在 Rails 6 中将不再有效。相反,您将拥有一个加密的凭据文件。
您可以使用 rails credentials:edit
创建文件。您将看到一条错误消息,其中包含基于您的编辑软件的建议命令。剪切并粘贴建议。
您将在此处存储所有 keys/tokens/etc。
您可以使用 Rails.application.credentials.secret_token
或 Rails.application.credentials.aws[:secret_access_token]
根据您上面的评论,听起来您需要将 config.secret_token
更改为 config.secret_key_base
,并将其设置为等于您的 secret_key_base 变量,如下所示:
YourApp::Application.config.secret_key_base = Rails.application.credentials.dig(Rails.env.to_sym, :secret_key_base)
这假定您的 credentials.yml.enc
文件具有以下设置:
production:
secret_key_base: a;sodkfjas;odkjfa;sodkjf
development:
secret_key_base: pqweiurwoeiurwopeiruowu
aws:
secret_access_token: mncMXncXMnc>KMXnc>KNc