Конфигурация Pylons имеет другой контент в websetup.py - PullRequest
0 голосов
/ 08 ноября 2010

В моем приложении пилонов я хочу добавить некоторые данные по настройке. (пользователь)

Для защиты паролей в базе данных я хэшировал пароли с солью , эта соль хранится в файле конфигурации.

Если я хочу получить солт-ключ из конфигурации, я делаю это (сокращенный пример):

from pylons import config

saltkey = config.get("saltkey")

Если этот код размещен, например, в модели, он возвращает солт-ключ. В пользовательской модели этот код используется для создания хеша с солью.

Однако, если я хочу создать экземпляр этой модели в "websetup.py", конфигурация имеет другое содержимое и не может получить солт-ключ (что приводит к ошибке)

def setup_app(command, conf, vars):
   load_environment(conf.global_conf, conf.local_conf)

   Base.metadata.create_all(bind=Session.bind)

   user = User('admin', 'password123', 'test@test.com')
   Session.add(user)
   Session.commit()

Мой вопрос: почему в конфиге другой контент? И как я могу исправить эту проблему без уродливого взлома?

1 Ответ

0 голосов
/ 10 ноября 2010

Вы можете получить доступ к вашему файлу конфигурации на этом шаге. Метод from pylons import config лучше всего подходит для этого в контексте запроса WSGI. Однако вы не имеете дело с запросом WSGI, поэтому он недоступен. К счастью, у вас есть очень простой способ доступа к конфигурации во время работы websetup.py. Функция setup_app() уже использует файл конфигурации, и Paster уже проанализировал его и превратил в словарь для вас.

Вы можете получить доступ к вашему файлу конфигурации в виде словаря conf.local_conf, и это сделает данные, которые вы хотите, доступными.

С учетом всего вышесказанного - вы не должны хранить соль в файле config.ini, это плохая идея, и вам следует избегать повторного изобретения колес, как это .

...