Did you read the comments on that snippet? It appears there may need to be some extra encoding/decoding needed (example additional code is listed there), which would make sense given the decoding errors you are seeing.
-James On Jan 27, 2015 9:54 AM, "Supermario" <[email protected]> wrote: > I try to implement this <https://djangosnippets.org/snippets/3030/> > hasher in order to be able to authenticate user who are imported from > drupal 7. > > So I put the hasher in the settings.py as follows: > > > PASSWORD_HASHERS = ( > > 'myproj.drupal_hasher.DrupalPasswordHasher', #drupal hasher > > 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', > > 'django.contrib.auth.hashers.BCryptPasswordHasher', > 'django.contrib.auth.hashers.SHA1PasswordHasher', > 'django.contrib.auth.hashers.MD5PasswordHasher', > 'django.contrib.auth.hashers.CryptPasswordHasher', > ) > > > > However it does not authenticate imported users from drupal and for users > who are created in Django I get: > > 'ascii' codec can't decode byte 0xcf in position 0: ordinal not in > range(128) > > > > > Here is the trackback: > > > Environment: > > > Request Method: POST > Request URL: http://127.0.0.1:8000/auth/ > > Django Version: 1.7.3 > Python Version: 2.7.3 > Installed Applications: > ('django.contrib.admin', > 'django.contrib.auth', > 'django.contrib.contenttypes', > 'django.contrib.sessions', > 'django.contrib.messages', > 'django.contrib.staticfiles', > 'article', > 'photo', > 'debug_toolbar', > 'django_markdown', > 'haystack') > Installed Middleware: > (u'debug_toolbar.middleware.DebugToolbarMiddleware', > 'django.contrib.sessions.middleware.SessionMiddleware', > 'django.middleware.common.CommonMiddleware', > 'django.middleware.csrf.CsrfViewMiddleware', > 'django.contrib.auth.middleware.AuthenticationMiddleware', > 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', > 'django.contrib.messages.middleware.MessageMiddleware', > 'django.middleware.clickjacking.XFrameOptionsMiddleware') > > > Traceback: > File > "/home/mario/.myprojenv/local/lib/python2.7/site-packages/django/core/handlers/base.py" > in get_response > 111. response = wrapped_callback(request, * > callback_args, **callback_kwargs) > File "/home/mario/myproj/myauth/views.py" in auth_view > 16. user = auth.authenticate(username=username, password= > password) > File > "/home/mario/.myprojenv/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py" > in authenticate > 60. user = backend.authenticate(**credentials) > File > "/home/mario/.myprojenv/local/lib/python2.7/site-packages/django/contrib/auth/backends.py" > in authenticate > 17. if user.check_password(password): > File > "/home/mario/.myprojenv/local/lib/python2.7/site-packages/django/contrib/auth/models.py" > in check_password > 237. return check_password(raw_password, self.password, > setter) > File > "/home/mario/.myprojenv/local/lib/python2.7/site-packages/django/contrib/auth/hashers.py" > in check_password > 63. setter(password) > File > "/home/mario/.myprojenv/local/lib/python2.7/site-packages/django/contrib/auth/models.py" > in setter > 235. self.set_password(raw_password) > File > "/home/mario/.myprojenv/local/lib/python2.7/site-packages/django/contrib/auth/models.py" > in set_password > 227. self.password = make_password(raw_password) > File > "/home/mario/.myprojenv/local/lib/python2.7/site-packages/django/contrib/auth/hashers.py" > in make_password > 85. return hasher.encode(password, salt) > File "/home/mario/myproj/myproj/drupal_hasher.py" in encode > 81. encoded_hash = self._apply_hash(password, self._digests[ > digest], settings) > File "/home/mario/myproj/myproj/drupal_hasher.py" in _apply_hash > 68. password_hash = digest(password_hash + password). > digest() > > Exception Type: UnicodeDecodeError at /auth/ > Exception Value: 'ascii' codec can't decode byte 0xcf in position 0: > ordinal not in range(128) > > > All source and destination database tables are converted to > utf8_unicode_ci. > > I am stock on this problem for days so really appreciate your help. > > > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/5dd15420-01d5-4b1f-adf0-af3ee585ba73%40googlegroups.com > <https://groups.google.com/d/msgid/django-users/5dd15420-01d5-4b1f-adf0-af3ee585ba73%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CA%2Be%2BciW9H3qLosHWPUrvC%2BZub%3DsJEXdU1-UMpkBK%2BrwKFH%2BZeA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

