Пользовательское промежуточное ПО 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
,