2017-01-14 2 views
0

У меня есть небольшое приложение Flask (Python3), которое начинает немного усложняться, поэтому я решил переключиться с SQLite на Postgresql. Я знал, что это вызовет несколько вопросов для меня, но моя кодовая база имеет достойное покрытие для тестирования, поэтому я был уверен, что смогу сгладить любые морщины, прежде чем приступать к производству.Bcrypt Invalid Salt and Postgresql

В частности, где угодно я ввел пароль, мне пришлось кодировать (password.encode('utf-8')).

(Кстати, часовые пояса был другой области у меня были некоторые проблемы. Я в конечном счете, в конечном итоге удаление часовых поясов с любой даты, который я использовал.)

Но есть только одна последняя ошибка, я не могу понять. Для того, чтобы проверить, что пароли будут обновлены У меня есть следующий тест:

self.assertTrue(bcrypt.check_password_hash(
    user.password, new_password 
)) 

Это должно проверить текущий пароль (который выглядит как байты жало, когда я распечатать его) против new_password. Но я получаю сообщение об ошибке ValueError: Invalid salt

Мне очень хотелось бы знать, как это исправить, но я также хотел бы, чтобы кто-то объяснил, что здесь происходит.

ответ

1

Таким образом, выясняется, что проблема заключалась в том, как я сохранял пароль. В этом конкретном случае я должен был сохранить пароль следующим образом:

user.password = bcrypt.generate_password_hash(
     request.form['password'] 
).decode('utf-8') 

db.session.commit() 

Теперь тест выше работает.

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