Bonjour,

J'ai un front en React et un back avec Django
Pour le connexion, j'utilise le module django-rest-framework-simplejwt pour générer un token
Ce package fournit une API refreshToken qui renvoie un nouveau Token.

Je voudrais également renvoyer le token et les infos de l'utilisateur connecté

Voici ce que j'ai fait :

Mon serializer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
class MyTokenRefreshSerializer(serializers.Serializer):
    token = TokenRefreshSerializer()
    user = UserSerializer()
La vue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
class MyTokenRefreshView(TokenRefreshView):
    serializer_class = MyTokenRefreshSerializer
 
    def post(self, request, *args, **kwargs):
 
 
        refreshToken = request.data
        serializerRefresh = TokenRefreshSerializer(data=refreshToken)
        if (serializerRefresh.is_valid()):
 
            #Je récupère le token et les infos de l'utilisateur à partir de celui-ci
            validated_token = JWTTokenUserAuthentication.get_validated_token(self,serializerRefresh.validated_data.get('access'))
            userId = JWTTokenUserAuthentication.get_user(self,validated_token)
            user = User.objects.get(pk=userId.pk)
 
            serializer = UserSerializer(user)
            data = OrderedDict([('token',refreshToken),('user',user)])
 
            tokenRefreshCustomSerializer = MyTokenRefreshSerializer(data=data)            
 
            if (tokenRefreshCustomSerializer.is_valid()):
                return Response(tokenRefreshCustomSerializer.validated_data)                   
        return Response(tokenRefreshCustomSerializer.errors)
Voici l'erreur retourné à l'exécution

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
{
    "user": {
        "non_field_errors": [
            "Invalid data. Expected a dictionary, but got User."
        ]
    }
}
Est ce que je suis parti sur la bonne voie pour retourner mon token et les infos utilisateur ? Si oui, que dois-je faire pour corriger l'erreur ? Sinon, comment faire ?

Merci pour votre aide