【发布时间】:2019-11-21 10:50:51
【问题描述】:
这几天我真的被这个问题困住了。
虽然我了解这里发生了什么,但我真的不知道最好的解决方法/解决方案。
问题:
我正在尝试使用 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 提供的一个视图,用于获取访问令牌以对请求进行身份验证。
解决方法/解决方案是什么?
有没有更好的方法来支持这种登录要求?
提前致谢!
【问题讨论】:
标签: django python-3.x request jwt