Как получить имя пользователя из Django Rest Framework JWT token

Я использую Django Rest Framework, и я включил сторонний пакет под названием Rest framework JWT Auth. Он возвращает токен при отправке имени пользователя / пароля на определенный маршрут. Тогда токен необходим для разрешения на определенные маршруты. Однако, как я могу получить имя пользователя из маркера? Я просмотрел всю документацию пакета и прошел через StackOverflow. Это веб-токен JSON, и я предполагаю, что есть такой метод, как username = decode_token(token) но я не нашел такого метод.

2 ответов


в основном вы могли бы сделать это

username = request.user.username

для меня с Django (2.0.1), djangorestframework (3.7.7), djangorestframework-jwt (1.11.0).

мне пришлось сделать следующее, чтобы вернуть пользователя из токена:

        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)

или вы можете написать промежуточное ПО, которое установит пользователя на основе их токена.

вы можете прочитать Пошаговое Руководство здесь: http://blog.sadafnoor.me/blog/a-django-rest-framework-jwt-middleware-to-support-request-user/