我是Rails 4的新手,不了解Rails 4中config/secrets.ymlsecret_key_base的用法.你能解释一下这个概念吗?

此外,当我在生产环境中工作时,系统会提示我将secret_key设置为devise.rbconfig.secret_keysecret_key_base.然而,我可以使用rake secret命令生成一个新的秘密.

开发环境和生产环境之间有什么区别?

当我每次生成时,它与新生成的secret_keysecret_key_base相加时,它是如何匹配的?

如何通过其他服务器保护应用程序?

推荐答案

secret_token.rb文件的内容包括一个长的随机字符串which is used to verify the integrity of signed cookies(例如用户登录到您的web应用时的用户会话).

Documentation说:

使用secret_token.rb初始值设定项中现有的密钥库

因为这是一个重要的文件,你不能把它放到.gitignore,使用env变量存储secret_key_base个值被视为一种良好做法:

创建.env.powenv文件并将其存储为:

export SECRET_TOKEN="9489b3eee4eccf317ed77407553e8adc97baca7c74dc7ee33cd93e4c8b69477eea66eaedeb18af0be2679887c7c69c0a28c0fded0a71ea472a8c4laalal19cb"

然后在config/initializers/secret_token.rb

YourAppName::Application.config.secret_key_base = if Rails.env.development? or Rails.env.test? # generate simple key for test and development environments
  ('a' * 30) # should be at least 30 chars long
else
  ENV['SECRET_TOKEN']
end

This article是(有点老,有点长)但确实充满了关于这个话题的有用信息.


UPDATE 04.05.15

从Rails 4.2开始,不再有secret_token.rb个文件.

Have a read关于如何将现有应用升级到4.2.x根据创新.


从技术上讲,secrect_key_base的用途是作为应用程序key_generator方法的秘密输入(判断Rails.application.key_generator).

Rails框架中的三个核心功能使用了应用程序的key_generator,也就是secret_key_base:

  • 为可通过
  • 导出HMAC签名cookie的密钥
  • 为所有

查看更多关于article by @michaeljcoyne人中三人的信息.

Ruby-on-rails相关问答推荐

API Rails 路由,令牌是路由的一部分

组合 active_record 模型并按共享属性排序

Ruby的自动代码质量工具?

循环大量记录时 Ruby on Rails 内存泄漏; find_each 没有帮助

Rails 3 - Select 包含?

Time.zone.now.to_date 是否等同于 Date.today?

I18n 用于特定于模型的 Rails 提交按钮

如何使用 Capistrano gem 为生产数据库 seeder ?

Ruby on Rails 的 varchar 迁移问题

机械师 vs FactoryGirl - 优点和缺点

form_tag 是否与 Simple_form 一起使用?

如何在不删除项目本身的情况下删除单个 HABTM 关联项目?

如何从邮箱中获取域

您推荐哪些工具来分析 Rails 应用程序?

错误:无法构建 gem 原生扩展 - 安装 mysql2 时出错

反编译开发assets资源 管道

在 Rails 中命名布尔列

您如何查看 ruby​​ 中的调用堆栈示例?

将现有的 html.erb 转换为 Haml

为什么 rails bootstrap 这么慢,我该怎么办?