secret_token.rb
файлу включає довгий рандомізований рядок, який використовується для перевірки цілісності підписаних файлів cookie (наприклад, сеансів користувача, коли люди входять у ваш веб-додаток).
Документація говорить:
Скористайтеся наявною базою secret_key_base з secret_token.rb
ініціалізатора, щоб встановити змінну середовища SECRET_KEY_BASE для того, хто з користувачів запускає програму Rails у виробничому режимі. Крім того, ви можете просто скопіювати наявний секретний_ключ_бази зsecret_token.rb
ініціалізатора в 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?
('a' * 30)
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:
- Виведення ключів для зашифрованих файлів cookie, до яких доступ
cookies.encrypted
.
- Виведення ключа для файлів cookie з підписом HMAC, до яких можна отримати доступ
cookies.signed
.
- Виведення ключів для всіх названих програм
message_verifier
екземплярів програми.
Перегляньте більше про кожен із трьох у статті @michaeljcoyne .
secret_key_base
як і раніше використовується, але зберігаєтьсяconfig/credentials.yml.enc
замість. Цей файл зашифровано. Ви можете знайти більше інформації про нову систему облікових даних тут або запуститиrails credentials:help
.