Как добавить Authenticate Middleware JWT django REST?
Я новичок в использовании Django и REST. И в моем проекте мне нужно добавить пользовательский JWT auth. Я пытался сгенерировать его следующим образом внутри модели User:
class User(AbstractUser):
....
def _generate_jwt_token(self):
dt = datetime.datetime.now() + datetime.timedelta(days=60)
token = jwt.encode({
'id': self.pk,
'exp': int(dt.strftime('%s'))
}, settings.SECRET_KEY, algorithm='HS256')
return token.encode("windows-1252").decode("utf-8")
В моих представлениях это так
class LoginAPIView(APIView):
def post(self, request):
...
response = Response()
response.set_cookie(key="jwt", value=user.token, httponly=True)
...
return response
И
class CurrentUserAPIView(APIView):
def get(self, request):
token = request.COOKIES.get('jwt')
if not token:
raise AuthenticationFailed('This user is unauthenticated')
try:
payload = jwt.decode(token, settings.SECRET_KEY, algorithms=['HS256'])
except:
msg = 'Invalid authentication. Could not decode token.'
raise AuthenticationFailed(msg)
try:
user = User.objects.get(pk=payload['id'])
except User.DoesNotExist:
msg = 'No user matching this token was found.'
raise AuthenticationFailed(msg)
serializer = UserSerializer(user)
return Response(serializer.data, status=status.HTTP_200_OK)
Но я думаю, что эта логика должна быть внутри промежуточного ПО. Не могли бы вы дать мне совет, как я могу переписать этот код. Большое спасибо!