Rails 6升级时secret_key_base与secret_token区别及配置问题
关于配置项更名的问题
config.secret_key_base确实是从config.secret_token迭代而来的配置项,从Rails 4.1版本开始官方就将原有的会话加密密钥配置从secret_token调整为secret_key_base,二者作用完全一致,都是用来加密用户会话、签名Cookie等敏感内容的核心密钥。你旧代码里只有secret_token是因为老版本Rails还没迭代配置命名。
关于你提供的配置是否可行
你写的secrets.yml配置完全可以正常使用,只要满足以下前提即可:
- 生产环境的
SECRET_TOKEN环境变量值和你旧版本项目使用的原有密钥完全一致,避免出现所有存量用户会话失效、已签名Cookie无法解密的问题 - 升级完成后可以删除原来的
config/initializers/secret_token.rb文件,避免多份配置冲突
额外建议
Rails 6已经支持更安全的Credentials加密存储方案来管理密钥,后续项目稳定后可以考虑将密钥迁移到Credentials中,不用明文配置在环境变量或者配置文件里,安全性更高。
内容的提问来源于stack exchange,提问作者booleanbuddha
相关产品推荐
相关产品推荐

