Revision history [back]
Taken from here: shopfiber.com/case-insensitive-username-login-in-django/
Add custom proxy to model authentication backend:
class CaseInsensitiveModelBackend(ModelBackend):
"""
By default ModelBackend does case _sensitive_ username authentication, which isn't what is
generally expected. This backend supports case insensitive username authentication.
"""
def authenticate(self, username=None, password=None):
try:
user = User.objects.get(username__iexact=username)
if user.check_password(password):
return user
else:
return None
except User.DoesNotExist:
return None
Once you have the model defined, edit your settings.py and specify “AUTHENTICATION_BACKENDS”.
AUTHENTICATION_BACKENDS = ('myproject.myapp.backends.CaseInsensitiveModelBacke