Django Authentication With Custom User Model With Email-id As Unique Key
to achieve unique constraint (without repetition of default user models fields) on email-id I did this from django.contrib.auth.models import AbstractUser class User(AbstractUser):
Solution 1:
You need to define backends.py like this:
from django.contrib.auth.models import User, check_password
classEmailAuthBackend(object):
"""
Email Authentication Backend
Allows a user to sign in using an email/password pair rather than
a username/password pair.
"""defauthenticate(self, username=None, password=None):
""" Authenticate a user based on email address as the user name. """try:
user = User.objects.get(email=username)
if user.check_password(password):
return user
except User.DoesNotExist:
returnNonedefget_user(self, user_id):
""" Get a User object from the user_id. """try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
returnNone
And in your settings file add this:
AUTHENTICATION_BACKENDS = ('backends.EmailAuthBackend',)
This will enable the login with email.
For more details visit this.
Post a Comment for "Django Authentication With Custom User Model With Email-id As Unique Key"