Django не проверяет подлинность пользователей, созданных с помощью shell

В моем проекте есть существующая унаследованная база данных, поэтому я использую inspectdb для создания моделей и для конкретных требований я использую пользовательскую модель пользователя

Нет, когда я создаю пользователя непосредственно в БД с помощью команд SQL, то пользователь проходит аутентификацию и может войти в систему, но когда я создаю пользователя с помощью команд SHELL (model_name.objects.create()), то пользователь не проходит аутентификацию и не может войти в систему.

И главное, ** когда я создаю пользователя с помощью SQL команды пароль хранится в RAW форме (не зашифрован), но когда я создаю пользователя с помощью SHELL команды пароль зашифрован и выглядит как

"pbkdf2_sha256---------------------------------"

managers.py

#managers.py
class UsermanagementCustomUserManager(BaseUserManager):
    def create_user(self,emailid,firstname, password=None):
        """
        Creates and saves a User with the given email, date of
        birth and password.
        """
        if not emailid:
            raise ValueError('Users must have an email address')

        user = self.model(
            emailid=self.normalize_email(emailid),
            password=password,

        )

        user.set_password(password) 
        user.save(using=self._db) 
        return user

backends.py

#backends.py

from django.contrib.auth.backends import BaseBackend
from django.contrib.auth.hashers import make_password,check_password
from django.contrib.auth import get_user_model

Usermanagement = get_user_model()



class EmailAuthBackend(BaseBackend):
    def authenticate(self,request,username=None,password=None):
        # print("Custom authenticate rqst: ",request)
        try:
            print("Trying the email backend!")
            user = Usermanagement.objects.get(emailid=username)
            print("Got the user")
            # print(password)
            # print(user.password)
            # print(check_password(password))
            # print(user.check_password(password))


            if user.password == password or user.check_password(password):
                return user
            
        except user.DoesNotExist:
            return None
    
    def get_user(self,user_id): 
        try:
            print("Getting the user of the Email Bkacned")
            return Usermanagement.objects.get(pk=user_id)
        except Usermanagement.DoesNotExist:
            return None

views.py

#views.py

from django.contrib.auth import login,logout ,authenticate
from django.contrib.auth.forms import AuthenticationForm


def loginPage(request):
    # POST
    if request.method == 'POST':
        form = AuthenticationForm(request,data=request.POST)

        if form.is_valid(): 
            email = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            #Check
            print("EMAIL: ",email)
            print("PASSWORD: ",password)
            # Authentication USER
            user = authenticate(request,username=email,password=password)
            print("Authenticated ",user) # Check
            # check
            print(user)

            if user is not None:
                if user.is_active:
                    login(request,user,backend='accounts.backends.EmailAuthBackend')
                # messages.info(request, f"You are now logged in as {email}.")
                    return redirect("home")
                else:
                    pass

            else: # If User Not found
                # messages.error(request,"User not found")
                # return HttpResponse("User not found, not able to login")
                pass

        else: # Form InValid
            # messages.error(request,"Invalid username or password.")
            # return HttpResponse("Form Invalid")
            context = {
                "form" : form
            }
            return render(request,"loginPage.html",context=context)
    # GET
    else:
        form = AuthenticationForm()
        context = {"form":form}
        return render(request,"loginPage.html",context=context)

Способ аутентификации пользователя - прямое использование

user.password == password
Вернуться на верх