【问题标题】:Django restful API - get user id with tokenDjango restful API - 使用令牌获取用户 ID
【发布时间】:2018-07-23 14:21:36
【问题描述】:

如何从具有身份验证令牌的 Django API 获取用户 ID? 基本上,我想发送身份验证令牌并取回用户 ID。 我试过这个解决方案:How can I return user ID with token in Django? 但它使用提供的用户名和密码返回令牌,这不是我想要的。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:
    #myapp/views.py
    class UserIdViewSet(viewsets.ModelViewSet):
        serializer_class = UserSerializer
    
        def get_queryset(self):
            return User.objects.filter(id=self.request.user.id)
    
    #myapp/urls.py
    router.register(r'api/user-id', userviews.UserIdViewSet, base_name="UserId")
    

    解决问题。基本上创建了视图集并针对当前用户进行排序。

    【讨论】:

      【解决方案2】:

      您使用什么类型的身份验证?

      例如,如果你使用来自rest_framework的TokenAuthentication,你可以看看这个类是如何实现请求认证的。

      您可以在那里找到方法 authenticateauthenticate_credentials,我相信在那里 - 您会找到如何获得用户的答案。

      【讨论】:

      • 我有来自 rest_framework 的 TokenAuthentication。会看看你提到的方法。
      【解决方案3】:

      在 perform_create 方法中,您可以将用户分配给您的模型

      class EmailViewSet(viewsets.ModelViewSet):
          authentication_classes = (TokenAuthentication)
          permission_classes = (IsAuthenticated,)
          queryset = Email.objects.all()
          serializer_class = EmailSerializer
      
          def perform_create(self, serializer):
              serializer.save(user=self.request.user)
      

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 2019-11-07
        • 2018-05-15
        • 2013-09-08
        • 1970-01-01
        • 2011-04-02
        • 2019-05-08
        相关资源
        最近更新 更多