How can I return user ID with token in Django?

后端 未结 4 933
广开言路
广开言路 2020-12-21 00:34

I generate tokens using default view in Django:

url(r\'^login/\', rest_auth_views.obtain_auth_token),

I have a problem because my front-end

4条回答
  •  我在风中等你
    2020-12-21 01:37

    I needed more than just user id with the token, so I did code to return the whole user object:

    *I use custom user, so if you are using django default user, change model and serializer to default.

    from users.serializers import CustomUserSerializer
    from users.models import CustomUser
    
    
    class CustomObtainAuthToken(ObtainAuthToken):
        def post(self, request, *args, **kwargs):
            response = super(CustomObtainAuthToken, self).post(request, *args, **kwargs)
            token = Token.objects.get(key=response.data['token'])
            user = CustomUser.objects.get(id=token.user_id)
            return Response({'token': token.key, 'user': CustomUserSerializer(user).data})
    

    Thanks to this thread it was easy! Hope my answer will save someones time too. :)

提交回复
热议问题