secret_token.rb
ファイルのコンテンツには、署名付き Cookie の整合性を検証するために使用されるランダム化された長い文字列が含まれています(ユーザーが Web アプリにサインインしたときのユーザー セッションなど)。
ドキュメントには次のように記載されています。
イニシャライザから既存の secret_key_base を使用してsecret_token.rb
、プロダクション モードで Rails アプリを実行するユーザーの SECRET_KEY_BASE 環境変数を設定します。または、既存の secret_key_base をsecret_token.rb
初期化子から production セクションのsecrets.yml にコピーして、 <%= ENV["SECRET_KEY_BASE"] %>
.
これは重要なファイルであり、.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
この記事 は (少し古くて) 長いですが、トピックに関する有益な情報が満載です。
更新 04.05.15
Rails 4.2 から、secret_token.rb
ファイルはなくなりました。新しい規則により、config/secrets.yml
アプリケーションの秘密を保存することを目的としたファイルがあります。
イノベーションに従って既存のアプリを 4.2.x にアップグレードする方法をお読みください。
技術的には、 の目的は、アプリケーションのメソッド (チェック)secrect_key_base
の秘密の入力になることです。key_generator
Rails.application.key_generator
アプリケーションのkey_generator
、したがってsecret_key_base
は、Rails フレームワーク内の 3 つのコア機能によって使用されます。
- 経由でアクセスできる暗号化された Cookie の派生キー
cookies.encrypted
。
- 経由でアクセスできる HMAC 署名付き Cookie のキーを取得します
cookies.signed
。
- アプリケーションのすべての名前付き
message_verifier
インスタンスのキーを導出します。
@michaeljcoyne による記事で、3 つのそれぞれについて詳しく確認してください。