2017-01-14 8 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() 

이제 위의 테스트가 작동합니다.