【问题标题】:Rails 6 secret_key_base vs secret_tokenRails 6 secret_key_base 与 secret_token
【发布时间】:2021-12-06 21:00:55
【问题描述】:

这可能是一个幼稚的问题,但我是 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 为在生产中运行 Rails 应用程序的任何用户设置 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']

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6.1


    【解决方案1】:

    您的 secrets.yml 文件在 Rails 6 中将不再有效。相反,您将拥有一个加密的凭据文件。

    您可以使用rails credentials:edit 创建文件。您将看到一条错误消息,其中包含基于您的编辑软件的建议命令。剪切并粘贴建议。

    您将在这里存储所有密钥/令牌/等。

    您可以通过Rails.application.credentials.secret_tokenRails.application.credentials.aws[:secret_access_token] 访问它们

    根据您上面的 cmets,听起来您需要将 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
    

    【讨论】:

      猜你喜欢
      • 2015-07-09
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2017-03-31
      • 2015-04-30
      • 2020-06-05
      • 1970-01-01
      相关资源
      最近更新 更多