Пользовательское промежуточное ПО OTP django_otp не обнаруживает уже аутентифицированного пользователя

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

Я вручную реализовал конечную точку API для создания устройства OTP, и он успешно создает устройство и связывается с пользователем, использованным для создания. Это мой упрощенный СРЕДНИЙ стек

MIDDLEWARE = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'oauth2_provider.middleware.OAuth2TokenMiddleware',
    'otp.middleware.FMSOTPMiddleware',
)

Сначала AuthenticationMiddleware добавил бы user возражать против запроса, а затем OAuth2TokenMiddleware Аутентифицирует () пользователя против бэкэнда.

Код для FMSOTPMiddleware промежуточное ПО - это:

class FMSOTPMiddleware(OTPMiddleware):
    def process_request(self, request, *args, **kwargs):
        super().process_request(request, *args, **kwargs)
        user = request.user 
        print(user)
        print(user.is_authenticated)

OTPMiddleware из django_otp добавляет user.otp_device Аттр и user.is_verified() метод. После добавления устройства OTP вручную и вызова этих методов оно работает правильно, но из промежуточного ПО user всегда возвращается AnonymousUser,

0 ответов

Другие вопросы по тегам