DjangoAapp продолжает выходить из системы для стандартного пользователя и администратора (персонала) - проблема с cookies

Имею рабочее приложение Django в продакшене, есть несколько проблем, которые возникают при входе в систему, переходе на сайты, предназначенные только для сотрудников (с использованием декораторов) и т.д.

  • При входе в систему мне иногда нужно сделать это 2, 3 или более раз, просто повторять имя пользователя и пароль, чтобы пользователь мог попасть на портал (ошибка не возникает)
  • .
  • При входе в систему под именем "staff", имея некоторые сайты на портале, которые ограничены, часто он просит ввести пароль еще раз (и показывает стандартную страницу входа в систему администратора Django, хотя все еще работает над приложением) - как будто веб-браузер не помнит, что "staff" уже вошел
  • .
  • Когда уже повторно вошел в систему как персонал (пункт выше), продолжая выполнять некоторые действия на странице, например, добавлять посты, при нажатии кнопки "post" снова запрашивает пароль (примечание, я создал страницу администратора на сайте, для добавления постов, управления пользователями и т.д.)

Я подозреваю, что это связано либо с:

  • Настройка моих Cookie
  • Используемые декораторы, ограничивающие доступ только для вошедших в систему пользователей или персонала

Благодарю за помощь!

settings.py

SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

SESSION_COOKIE_AGE = 24*60*60*7 #1 week
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_NAME = 'www.mywebsite.com'
CSRF_COOKIE_SECURE = True

SECURE_HSTS_SECONDS = 86400  # 1 day
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_SSL_REDIRECT = True

SECRET_KEY = os.getenv("SECRET_KEY") #from .env file

Пример, в котором сотрудники могут получить доступ только с помощью decoratror views.py

@staff_member_required
@login_required
def newsletter(request):
    users = User.objects.all()
    # end the rest of the code

Ранее я также использовал нижеприведенный вариант, но он не имел никакого значения:

@staff_member_required(login_url='home')

Вот decorators.py, который я недавно добавил, но не уверен, что это нормально или просто общее - не уверен, нужно ли это вообще. Должен ли я добавить это в decorators.py или удалить его и использовать @staff_member_required по умолчанию как есть:

def staff_member_required(view_func=None, redirect_field_name=REDIRECT_FIELD_NAME,
                          login_url='admin:login'):
    """
    Decorator for views that checks that the user is logged in and is a staff
    member, redirecting to the login page if necessary.
    """
    actual_decorator = user_passes_test(
        lambda u: u.is_active and u.is_staff,
        login_url=login_url,
        redirect_field_name=redirect_field_name
    )
    if view_func:
        return actual_decorator(view_func)
    return actual_decorator
Вернуться на верх