Here is what I did to make it work. I created my own authentication server. Note. I use the email address as the username.
Here is my code:
from django.db.models import get_model from django.contrib.auth.models import User from hashlib import sha1 class MyUserAuthBackend(object): def check_legacy_password(self, db_password, supplied_password): return constant_time_compare(sha1(supplied_password).hexdigest(), db_password) def authenticate(self, username=None, password=None): """ Authenticate a user based on email address as the user name. """ try: user = User.objects.get(email=username) if '$' not in user.password: if self.check_legacy_password(user.password, password): user.set_password(password) user.save() return user else: return None else: if user.check_password(password): return user except User.DoesNotExist: return None def get_user(self, user_id): """ Get a User object from the user_id. """ try: return User.objects.get(pk=user_id) except User.DoesNotExist: return None
Then I added the following settings.py parameters:
AUTHENTICATION_BACKENDS = ( 'my_website.my_app.my_file.MyUserAuthBackend', )
The suggestion from @Dougal is similar to the next release of Django and is not available to me (I use 1.3.1). However, it seems that this will be the best solution.
source share