2010-11-08 3 views
0

В моем приложении pylons я хочу добавить некоторые данные о настройке. (пользователь)Конфигурация Pylons имеет различный контент в websetup.py

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

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

from pylons import config 

saltkey = config.get("saltkey") 

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

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

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', '[email protected]') 
    Session.add(user) 
    Session.commit() 

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

ответ

0

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

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

Со всем сказанным - вы не должны хранить соль в файле config.ini, that's a bad idea and you should avoid wheel-reinvention like that.

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