Пользовательская аутентификация по-прежнему требует входа на сайт администратора

Я создаю пользовательскую модель пользователя с возможностью использования имени пользователя или электронной почты для входа. Я создал пользовательскую функцию входа и могу нормально войти на сайт, но она все равно требует повторного входа, когда я пытаюсь получить доступ к сайту администратора (даже если пользователь имеет привилегии администратора).

Есть идеи, в чем может быть проблема?

Модель пользователя

class User(AbstractUser):
    status = models.CharField(max_length=100,blank=True)
    class Meta:
        db_table='auth_user'

Backend

class BothAuthBackend(object):
    def authenticate(self, loginDetail=None, password=None):
        
        try:
            user = UserModel.objects.get(email=loginDetail)
        except:
            user = None

        if user == None:
            try:
                user = UserModel.objects.get(username=loginDetail)
            except:
                user = None

        try:
            if user.check_password(password):
                return user
        except UserModel.DoesNotExist:
            return None

    def get_user(self, user_id):
        try:
            return UserModel.objects.get(pk=user_id)
        except UserModel.DoesNotExist:
            return None

Вид функции

def login(request):

    if request.method == 'GET':
        form = LoginForm2()
        return render(request,'users/login.html',{'form': form})
    
    if request.method == 'POST':
        form = LoginForm2(request.POST)

        if form.is_valid():
            
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = BothAuthBackend.authenticate(request, loginDetail=username, password=password)
            
            if user is not None:  
                return render(request,'users/afterLogin.html')
            else:           
                return render(request, 'users/login.html', {'form': LoginForm2()})
        else:
            form = LoginForm2()
            return render(request,'users/login.html',{'form': form})

Настройки

AUTH_USER_MODEL = 'users.User'
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend','users.backends.BothAuthBackend']

Нашел собственное решение,

Нужно импортировать это в представления (и изменить имя функции представления)

from django.contrib.auth import login

Затем в методе представления

if user is not None:         
      login(request,user) 
      return redirect('users:afterLogin')

Также необходимо только 'users.backends.BothAuthBackend' в файле настроек

Вернуться на верх