Django сбрасывает права доступа пользователей

Я создаю сайт, используя React для фронтенда и Django для бэкенда. Страница входа отправляет запрос к этой функции представления при нажатии кнопки входа.

@api_view(['POST'])
def api_authenticate_login_view(request):
    body = request.data
    username = body['username']
    password = body['password']

    user = authenticate(request, username=username, password=password)

    if user is not None:
        login(request, user)

        content = {"authenticated": True}
        return Response(content)

    else:
        content = {"authenticated": False}
        return Response(content)

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

@api_view(['GET'])
def api_is_authenticated_view(request):
    if request.user.is_authenticated:
        content = {"authenticated": True}
        return Response(content)

    else:
        content = {"authenticated": False}
        return Response(content)

Если возвращается false, они перенаправляются на страницу входа в систему.

Проблема в том, что это отлично работает для большинства наших пользователей, но для некоторых из них постоянно сбрасываются их права доступа на странице администратора Django. Я имею в виду, что в разделе пользователя на странице администратора Django вы можете выбрать пользователя и посмотреть его разрешения. На нашей странице это показывает галочку рядом с тегами Active, Staff status, Superuser и другими (см. изображение по ссылке ниже)

Разрешения пользователя Django

Для некоторых пользователей эти флажки не отмечены, что означает, что они не могут войти в систему, так как пользователь неактивен. Также пользователь будет возвращаться как None в функции api_authenticate_login_view.

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

Я обнаружил, что происходит то, что как только они входят в систему, их права Django немедленно сбрасываются путем снятия меток статуса Active и Staff.

Нет никакой разницы между этими пользователями и другими пользователями, для которых это работает. Я пробовал делать их суперпользователями, перезапускать сервер Django, пробовал разные браузеры, проверял, что они не делают ничего другого с cookies, все безрезультатно. Неважно, сколько раз я устанавливал для них статус Active и давал им статус Staff, как только они пытаются войти в систему, их сбрасывает. Я не могу найти ничего в Интернете, чтобы помочь мне выяснить, почему это происходит.

Вот что мы имеем для бэкенда аутентификации и промежуточного программного обеспечения в settings.py

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',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
]

AUTHENTICATION_BACKENDS = [
    "django_auth_ldap.backend.LDAPBackend",
    "django.contrib.auth.backends.ModelBackend",
]

Большое спасибо за ваше время и помощь.

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