How can I return user ID with token in Django?

后端 未结 4 915
广开言路
广开言路 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条回答
  •  旧时难觅i
    2020-12-21 01:19

    I think the good practice will be to return user details in the response of login api.

    If your built_in view doesn't return user details you can may be override the post method of obtain_auth_token. I once did this for djangorestframework-jwt obtain token method

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
    
        if serializer.is_valid():
            user = serializer.object.get('user') or request.user
            token = serializer.object.get('token')
            response_data = {
                'token': token,
                'user': UserSerializer(user).data
            }
            response = Response(response_data, status=status.HTTP_200_OK)
            if api_settings.JWT_AUTH_COOKIE:
                expiration = (datetime.utcnow() +
                              api_settings.JWT_EXPIRATION_DELTA)
                response.set_cookie(api_settings.JWT_AUTH_COOKIE,
                                    response.data['token'],
                                    expires=expiration,
                                    httponly=True)
            return response
    
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    

    by default response_data dict only had token details i added user object as well to achieve what you are trying to do.

提交回复
热议问题