Я действительно застрял в этой проблеме на пару дней.
Хотя я понимаю, что здесь происходит, я действительно не знаю лучшего обходного пути / решения для этого.
Проблема:
Я пытаюсь создать конечную точку входа пользователя, используя Django и DRF в целом.
Мой API входа должен поддерживать вход в систему с помощью пароля, а также вход через OTP.
Мой LoginView
выглядит так:
def post(self, request, **kwargs):
"""
post
Method to handle user login
:param request:
:param args:
:param kwargs:
:return:
"""
request_data = request.data
login_using_password = request_data.get('login-with-password') is True
login_using_otp = request_data.get('login-with-otp') is True
if request_data is not None:
if all((login_using_password, login_using_otp)):
raise accounts_exceptions.InvalidLoginRequestError()
if login_using_password:
return Response(self._login_with_password(request))
elif login_using_otp:
return Response(self._login_with_otp(request))
raise accounts_exceptions.InvalidLoginRequestError()
return Response(self._login_with_password(request))
Также мой _login_with_password
выглядит так:
def _login_with_password(self, request, **kwargs):
"""
_login_with_password
A utility method to handle login with password
:param request:
:return:
"""
return getattr(ObtainJSONWebToken.as_view()(request=request._request, ), 'data')
Когда я пытаюсь войти, Django
жалуется, говоряRawPostDataException You cannot access body after reading from request's data stream
Я использую JWT
для проверки подлинности запросов.ObtainJSONWebToken
- это представление, предоставляемое DRF-JWT для получения маркеров доступа для проверки подлинности запросов.
Какой обходной путь / решение для этого?
Есть ли лучший способ поддержать такое требование для входа в систему?
Заранее спасибо!