Является ли ActiveRecord излишним для хранения пароля на сайте поставщика? - PullRequest
0 голосов
/ 28 февраля 2011

Рассмотрим этот сценарий. У нас есть внутреннее приложение Rails 2, которое подключается к сайту поставщика с помощью Savon (библиотека Ruby SOAP). Соединение основано на аутентификации с использованием имени пользователя и пароля. Пароль меняется каждые 30 дней. Прямо сейчас - каждые 30 дней разработчики должны заходить на сайт вендора, обновлять пароль и возвращаться к нашему внутреннему приложению rails, обновлять пароль, передавать приложение на веб-сервер и перезапускать пассажира.

Мы храним пароль в виде константы в файле среды вместе с парой дополнительных констант, специфичных для сети. Мы как бы хотим переложить эту ответственность на менеджера по обслуживанию клиентов, чтобы она обновляла пароль каждые 30 дней, переходила к небольшой форме в приложении и обновляла пароль.

Как лучше всего хранить этот пароль? Очевидно, мы не можем сделать CONSTANT в файле среды и продолжать перезагружать приложение. Но в то же время создание модели для хранения одного пароля в отдельной таблице кажется излишним, поскольку часть приложения, выполняющая запрос к сайту поставщика, выполняет около 1000 запросов в день и должна быть довольно быстрой, это означает, что хранение этого пароля в таблице требует дополнительного запроса каждый раз, когда выполняется запрос. Конечно, для нашего тома это не имеет большого значения, но теоретически, что является лучшим \ эффективным решением этой проблемы, кроме того, что мы делаем сейчас, загружая его в память при запуске приложения?

1 Ответ

2 голосов
/ 28 февраля 2011

Сохраните (зашифрованный) пароль в плоском файле.Перезагрузите файл по сигналу, или при ошибке аутентификации, или если прошло более 10 секунд с момента последней перезагрузки и отметка времени файла изменилась.Оберните эту логику в один метод, такой как .getCredentials().В большинстве случаев он просто возвращает кэшированные значения логина и пароля.

Хранение этого в правильной базе данных для меня выглядит излишним.

...