How to get username from Django Rest Framework JWT token
For me with Django (2.0.1), djangorestframework (3.7.7), djangorestframework-jwt (1.11.0).
I had to do following to get my use back user from token:
token = request.META.get('HTTP_AUTHORIZATION', " ").split(' ')[1] print(token) data = {'token': token} try: valid_data = VerifyJSONWebTokenSerializer().validate(data) user = valid_data['user'] request.user = user except ValidationError as v: print("validation error", v)
Or you can write a middleware that would set user based on their token.
For me, this worked as RestFrameworkJWT is no longer maintained.So I used the rest_framework_simplejwt
package.
from rest_framework_simplejwt.backends import TokenBackendtoken = request.META.get('HTTP_AUTHORIZATION', " ").split(' ')[1]data = {'token': token} try: valid_data = TokenBackend(algorithm='HS256').decode(token,verify=False) user = valid_data['user'] request.user = user except ValidationError as v: print("validation error", v)