我将我的密钥存储在环境中,并且/config/environments/production.rb具有config.require_master_key = true,未注释
[Authorize(Policy = Policies.RequireAdministrator)]
[HttpPost("execute")]
public async Task<IActionResult> ExecuteOperation([FromBody] CommandModel model)
{
...
}
运行时
config.require_master_key = true
我得到了错误
RAILS_ENV=production bundle exec rake assets:precompile
有关如何解决此错误的任何想法?我还能做什么?
答案 0 :(得分:1)
在生产环境中的Ubuntu上设置Rails 6.0应用程序时,我遇到了同样的问题。
我正在使用figaro宝石作为环境变量。
问题是我正在复制secret_key_base
的内容,而不是master_key
这是我解决的方式
删除先前的master.key
和credentials.yml.enc
文件
重新创建新的master.key
和credentials.yml.enc
:
rails credentials:edit
OR
EDITOR="code --wait" bin/rails credentials:edit # If you want to use VS Code as your editor
复制master.key的内容,其格式如下:
34d3cc7c5305dde06865acfa473716cd
在生产环境中用master_key替换我的RAILS_MASTER_KEY
值:
RAILS_MASTER_KEY: "34d3cc7c5305dde06865acfa473716cd"
然后保存它。
注意:如果您在RAILS_MASTER_KEY
文件(.env
,{{1 }},.env
,.env.development
)。假设您只想暂时将其用作占位符。如果您尝试使用.env.test
或.env.production
key=': key must be 16 bytes (ArgumentError)
和master.key
文件,这也可能引发错误credentials.yml.enc
。
您需要做的是在rails credentials:edit
文件中提供正确的EDITOR="code --wait" bin/rails credentials:edit
环境变量,或者在不使用环境变量的情况下注释掉RAILS_MASTER_KEY
环境变量。
就是这样。
我希望这会有所帮助
答案 1 :(得分:0)
您的问题是您生成的密钥比Rails期望的密钥更长https://github.com/rails/rails/issues/33528#issuecomment-412677795
解决方案
您可以通过删除master.key和凭据.yml.enc并运行来重新创建一个新的
rails credentials:edit
答案 2 :(得分:0)
对我来说,我必须确保删除 .env 文件中密钥周围的引号。
我的服务器(AWS ECS Fargate)似乎将 "" 作为密钥的一部分。在当地一切都很好。
之前
RAILS_MASTER_KEY="12345"
之后
RAILS_MASTER_KEY=12345