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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to