Orig_iat отсутствует в полезной нагрузке при реализации настройки JSONWebTokenSerializer - PullRequest
0 голосов
/ 11 декабря 2018

Я реализую пользовательский JSONWebTokenSerializer.Пока все работает нормально, но мне нужно включить обновление токена, но когда я пытаюсь обновить токен, я получаю ошибку проверки orig_iat field is required.При проверке полезной нагрузки, возвращенной из jwt_payload_handler, атрибут orig_iat field отсутствует.

class CustomJWTSerializer(JSONWebTokenSerializer):

@property
def username_field(self):
    return "username_or_email_or_phone"

def validate(self, attrs):
    username = attrs.get('username_or_email_or_phone', None)
    credentials = {
        'username': username,
        'password': attrs.get('password')
    }

    if all(credentials.values()):
        user = authenticate(**credentials)

        if user:
            if not user.is_active:
                raise serializers.ValidationError(
                    'This user has been deactivated.'
                )

            payload = jwt_payload_handler(user)

            return {
                'token': jwt_encode_handler(payload),
                'user': user
            }

        else:
            raise serializers.ValidationError(
                'A user with this credentials was not found.'
            )

    else:
        msg = _('Please provide an (username or email or phone number) and password.')
        raise serializers.ValidationError(msg)

Вот мои настройки JWT_AUTH:

JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
'JWT_RESPONSE_PAYLOAD_HANDLER': 'common.utilities.auth.jwt_response_payload_handler',
'JWT_AUTH_HEADER_PREFIX': 'Bearer',
'JWT_PAYLOAD_HANDLER':
'rest_framework_jwt.utils.jwt_payload_handler',
'JWT_ALLOW_REFRESH': False,

}

1 Ответ

0 голосов
/ 11 декабря 2018

Если JWT_ALLOW_REFRESH - True, токены с истекшим сроком действия могут быть «обновлены» для получения нового токена с возобновленным сроком действия. [ JWTDoc ]

Извините, нашел мою ошибку.'JWT_ALLOW_REFRESH': False изменено на 'JWT_ALLOW_REFRESH': True,. Теперь работает

...