Содержимое файла 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? # 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:
- Получение ключей для зашифрованных файлов cookie, которые доступны через
cookies.encrypted
.
- Получение ключа для файлов cookie, подписанных HMAC, которые доступны через
cookies.signed
.
- Получение ключей для всех именованных экземпляров приложения
message_verifier
.
Узнайте больше о каждом из трех в статья @michaeljcoyne.
person
Andrey Deineko
schedule
21.08.2014
secret_key_base
по-прежнему используется, но вместо этого хранится вconfig/credentials.yml.enc
. Этот файл зашифрован. Дополнительную информацию о новой системе учетных данных можно найти здесь или запуститьrails credentials:help
. - person 3limin4t0r   schedule 22.01.2020