Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update user.py to prevent attribute error in check_password function #2605

Closed
wants to merge 1 commit into from

Conversation

pranaysashank
Copy link

The original file is throwing Attribute Error in check_password function with python 3 interpreter. (didn't check with python 2)
password_hash is of type bytes, bytes object doesn't have attribute encode.
The error is evaded by removing the encoding function.

The original file is not working with python 3 interpreter. (didn't check with python 2)
password_hash is of type bytes, bytes object doesn't have attribute encode.
The error is evaded by removing the encoding function.
@digitalresistor
Copy link
Member

Please see this PR as to why the change was made: #2576

We need to convert this to a LargeBinary and make sure that it works on both Python 2/3.

@digitalresistor digitalresistor modified the milestones: 1.8, 1.7.1 Jun 1, 2016
@stevepiercy
Copy link
Member

Closing in favor of new issue #2623

@stevepiercy stevepiercy closed this Jun 3, 2016
mmerickel added a commit to mmerickel/pyramid that referenced this pull request Jul 16, 2016
Something really weird is happening but this fixes it. SQLAlchemy is
returning the "password_hash" from queries as the type that it was
inserted as. Not consistently unicode or bytes. If I insert bytes, then
I get bytes back out. If I insert unicode then I get unicode back out.
It's unclear why, as the type is Text, the data we're storing is
unambiguously US-ASCII and the connection is using a consistent
text_factory for unicode conversions of "str" on Python 3.

Here, we ensure that we always insert the value as unicode which appears
to fix downstream issues like those mentioned in Pylons#2605. I was able to
reproduce that bug and confirm this fixes it if the original database is
initialized using this fix.

Obsoletes Pylons#2623.
mmerickel added a commit to mmerickel/pyramid that referenced this pull request Jul 16, 2016
Something really weird is happening but this fixes it. SQLAlchemy is
returning the "password_hash" from queries as the type that it was
inserted as. Not consistently unicode or bytes. If I insert bytes, then
I get bytes back out. If I insert unicode then I get unicode back out.
It's unclear why, as the type is Text, the data we're storing is
unambiguously US-ASCII and the connection is using a consistent
text_factory for unicode conversions of "str" on Python 3.

Here, we ensure that we always insert the value as unicode which appears
to fix downstream issues like those mentioned in Pylons#2605. I was able to
reproduce that bug and confirm this fixes it if the original database is
initialized using this fix.

Obsoletes Pylons#2623.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants