使用 Rails 凭据挑战 accessing/working
Challenges accessing/working with Rails credentials
我一直在尝试访问我在 Rails 加密凭据中设置的 API 密钥。我使用 Vim 将密钥添加到文件中,并仔细检查它们是否正确保存。
我在 config/environments
中的测试、开发和生产文件中添加了 config.require_master_key = true
。
但是当我尝试使用 API 键之一时,它 returns nil
.
我的凭证设置如下:
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 1234567890
stripe:
development:
stripe_public_key: pk_test_1234567890
stripe_secret_key: sk_test_1234567890
stripe:
test:
stripe_public_key: pk_test_1234567890
stripe_secret_key: sk_test_1234567890
stripe:
production:
stripe_public_key: pk_live_1234567890
stripe_secret_key: sk_live_1234567890
然后在文件中我想使用它 (new.html.erb
) 我正在尝试访问脚本中的凭据。
const stripe = Stripe("<%= Rails.application.credentials.stripe.stripe_public_key %>")
但它没有 return 任何东西。
在深入了解 Stack Overflow 和 Rails 文档后,我尝试了其他几个 versions/syntax,但还没有任何效果。
也尝试了 const stripe = Stripe("<%= Rails.application.credentials.stripe[Rails.env.to_sym][:stripe_public_key] %>")
,但也没有成功。
当我 运行 服务器,并在 Chrome Dev Tools 中查看脚本时,它显示为 const stripe = Stripe("")
值得注意的是,当我 运行 rails credentials:show
时,凭证会正确打印到终端,因此它们确实存在。我一定是错误地访问了它们。
正如@DennyMueller 在评论中指出的那样,问题是 'stripe' 密钥在文件中被覆盖,只有最后一个最终存在于配置中。
无论如何,指出这不是 Rails 期望管理依赖于环境的凭据的方式是有用的。相反,您应该有单独的文件 config/credentials/development.yml.enc
和 config/credentials/test.yml.enc
,它们由 运行
生成
rails credentials:edit --environment development
rails credentials:edit --environment test
因此每个凭据文件不应将环境名称作为内部任何位置的密钥。
我一直在尝试访问我在 Rails 加密凭据中设置的 API 密钥。我使用 Vim 将密钥添加到文件中,并仔细检查它们是否正确保存。
我在 config/environments
中的测试、开发和生产文件中添加了 config.require_master_key = true
。
但是当我尝试使用 API 键之一时,它 returns nil
.
我的凭证设置如下:
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 1234567890
stripe:
development:
stripe_public_key: pk_test_1234567890
stripe_secret_key: sk_test_1234567890
stripe:
test:
stripe_public_key: pk_test_1234567890
stripe_secret_key: sk_test_1234567890
stripe:
production:
stripe_public_key: pk_live_1234567890
stripe_secret_key: sk_live_1234567890
然后在文件中我想使用它 (new.html.erb
) 我正在尝试访问脚本中的凭据。
const stripe = Stripe("<%= Rails.application.credentials.stripe.stripe_public_key %>")
但它没有 return 任何东西。
在深入了解 Stack Overflow 和 Rails 文档后,我尝试了其他几个 versions/syntax,但还没有任何效果。
也尝试了 const stripe = Stripe("<%= Rails.application.credentials.stripe[Rails.env.to_sym][:stripe_public_key] %>")
,但也没有成功。
当我 运行 服务器,并在 Chrome Dev Tools 中查看脚本时,它显示为 const stripe = Stripe("")
值得注意的是,当我 运行 rails credentials:show
时,凭证会正确打印到终端,因此它们确实存在。我一定是错误地访问了它们。
正如@DennyMueller 在评论中指出的那样,问题是 'stripe' 密钥在文件中被覆盖,只有最后一个最终存在于配置中。
无论如何,指出这不是 Rails 期望管理依赖于环境的凭据的方式是有用的。相反,您应该有单独的文件 config/credentials/development.yml.enc
和 config/credentials/test.yml.enc
,它们由 运行
rails credentials:edit --environment development
rails credentials:edit --environment test
因此每个凭据文件不应将环境名称作为内部任何位置的密钥。