я нашел в Интернете, что мы можем переопределить JSONWebTokenSerializer, имея это в нашем URL url(r'^login/', ObtainJSONWebToken.as_view(serializer_class=CustomJWTSerializer)),
и с точки зрения у меня естьЗачем отменять перезагрузку JSONWebTokenSerializer сохраняет только возвращаемый токен? питон
class CustomJWTSerializer(JSONWebTokenSerializer):
def __init__(self, *args, **kwargs):
super(JSONWebTokenSerializer, self).__init__(*args, **kwargs)
self.fields['email'] = serializers.CharField()
self.fields['password'] = PasswordField(write_only=True)
def validate(self, attrs):
credentials = {
'username': attrs.get('email'),
'password': attrs.get('password')
}
print(credentials)
if all(credentials.values()):
user = authenticate(**credentials)
if user:
if not user.is_active:
msg = _('User account is disabled.')
raise serializers.ValidationError(msg)
payload = jwt_payload_handler(user)
return {
'token': jwt_encode_handler(payload),
'user': user
}
else:
msg = _('Unable to login with provided credentials.')
raise serializers.ValidationError(msg)
else:
msg = _('Must include "{username_field}" and "password".')
msg = msg.format(username_field=self.username_field)
raise serializers.ValidationError(msg)
С этим, я могу начать перекрывая оригинал, но каким-то образом возвращение объект всегда просто токен.
Как-то я не мог найти, где это генерируется, это выглядит, как будто это из-за
return {
'token': jwt_encode_handler(payload),
'user': user
}
Даже с этим, пользователь не будет возвращен только маркеры. Я даже пытался вынимая всю отдачу и имеют return{}
, но с правом верительных, она по-прежнему возвращает что-то вроде {"token": null}
Я даже попытался использовать return Response({})
, но все же, где это получение {"token": null}
от и почему он не показывает мою user object
как ответ хотя? Я использовал print (user)
и наверняка существует, что он действителен, хотя
Пожалуйста, напишите, что вы хотите архивировать. – Raz
@Raz Я хочу вернуть объект пользователя не только токен – Dora
Переопределение JSONWebTokenSerializer - это не то, что вы хотите. Вам нужно использовать собственный обработчик полезной нагрузки. Прочтите ответ @hairetdin и примите его как решение, так оно и есть. Я не уверен, работает ли его код, но принцип верен. – Silko