J'ai trouvé en ligne que nous sommes en mesure de passer outre JSONWebTokenSerializer en ayant ceci dans notre url url(r'^login/', ObtainJSONWebToken.as_view(serializer_class=CustomJWTSerializer)),
et vue jePourquoi la réinitialisation de JSONWebTokenSerializer ne cesse-t-elle pas de renvoyer le jeton? python
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)
Avec cela, je peux commencer remplaçant l'original, mais en quelque sorte l'objet de retour est toujours juste le jeton.
D'une certaine façon je ne pouvais pas trouver où il est généré, il ne semble que c'est à cause de
return {
'token': jwt_encode_handler(payload),
'user': user
}
Même avec cela, l'utilisateur n'est pas retourné seulement les jetons. J'ai même essayé de prendre le retour ensemble et ont return{}
mais avec les informations d'identification droite, il retourne encore quelque chose comme {"token": null}
J'ai même essayé d'utiliser return Response({})
mais où est-il obtient le {"token": null}
et pourquoi est-il pas montrer mon user object
comme réponse cependant? J'ai utilisé print (user)
et bien sûr il existe que c'est valide si
S'il vous plaît écrivez ce que vous voulez archiver. – Raz
@Raz Je veux retourner l'objet utilisateur et pas seulement le jeton – Dora
Surcharger JSONWebTokenSerializer n'est pas ce que vous voulez. Vous devez utiliser votre propre gestionnaire de charge utile de réponse. Lisez @hairetdin réponse et acceptez-le comme une solution, parce que c'est. Je ne sais pas si son code fonctionne mais le principe est correct. – Silko