2016-05-10 2 views
0

Я написал следующее в моем контроллере:Есть ли способ зашифровать пароль базовой аутентификации Http в рельсах?

http_basic_authenticate_with name: "foo", password: "bar", except: [:new, :show, :edit, :create] 

, но когда я нажимаю его к моему репо, пароль там для всех, чтобы видеть. Есть ли способ зашифровать пароль?

ответ

1

Вы, вероятно, хотите использовать переменные окружения для этого :) Там есть драгоценный камень (как за все в основном): https://github.com/bkeepers/dotenv

В файле .env вы бы следующее:

AUTHENTICATION_USERNAME="foo" 
AUTHENTICATION_PASSWORD="bar" 

Где, как в контроллере вы пишете так:

http_basic_authenticate_with name: ENV['AUTHENTICATION_USERNAME'], password: ENV['AUTHENTICATION_PASSWORD'], except: [:new, :show, :edit, :create] 

таким образом, ваш код будет полностью отделена от фактической информации. Убедитесь, что не добавить .env-файл в GIT-репозиторий, добавив в ваш gitignore:

.env 

Так что это делает это будет загружать эти переменные, заданные в .env в ваши существующие переменные среды. Таким образом, кому-то нужно фактически войти в ваш сервер и получить доступ к этому конкретному файлу, чтобы получить имя пользователя/пароль. И это должно быть более безопасным, чем наличие имени пользователя/пароля в тексте внутри вашего контроллера;)

+0

Спасибо за очень подробный ответ. Извините мое невежество, но что такое .env-файл и как его получить/ifnd? Я установил gem, но не могу найти этот файл где-нибудь – user2026178

+1

Привет. Вам нужно будет создать этот файл в своем домашнем каталоге. 'touch ~/.env' выполняет эту работу. Файл .env в конечном итоге будет добавлен к вашим другим переменным среды, которые уже есть в вашей системе. Таким образом приложение может их использовать. –

Смежные вопросы