В какой части приложения Django происходит аутентификация пользователя?

Я пытаюсь ограничить несколько входов пользователя с помощью сессий. Ниже приведен мой код

моя модель

    class LoggedInUser(models.Model):
        user = models.OneToOneField(CustomUser, related_name='logged_in_user', on_delete =models.CASCADE)
        session_key = models.CharField(max_length=40, null=True, blank=True)
    
        def __str__(self):
        return self.user.username

моя средняя программа

ef MySessionMiddleware(get_response):
  
    def my_function(request):
  
        if request.user.is_authenticated:
            try:
                user = LoggedInUser.objects.filter(user=request.user).first()
            except:
                user = LoggedInUser.objects.create(user=request.user)
            
             if user.session_key:
                 #check whether old key is same as current
                 print('here inside user.session_key')
                 if user.session_key != request.session.session_key:
                    return JsonResponse("you already have a active session kindly logout from that", 
                            status=400, safe=False)
             user.session_key = request.session.session_key
             user.save()
                
        response = get_response(request)
                
        return response
    return my_function

моя настройка промежуточного ПО

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'pwned_passwords_django.middleware.PwnedPasswordsMiddleware',
    'oneFA.middlewares.password_validator_middleware',
    'oneFA.middlewares.MySessionMiddleware',
]

моя логика

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

моя ошибка

request.user.is_authenticated всегда приходит false, что означает, что пользователь сейчас не аутентифицирован, я даже пробовал разместить свое промежуточное ПО впереди промежуточного ПО аутентификации и делать свою работу после того, как ответ был сделан, т.е. в цикле возврата, когда каждое промежуточное ПО вызывается снова, но это дает мне то же самое, поэтому мне нужна помощь, когда пользователь аутентифицирован, чтобы я мог проверить ключ сессии или нужно внести изменения в мой подход

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