【发布时间】:2018-07-23 14:21:36
【问题描述】:
如何从具有身份验证令牌的 Django API 获取用户 ID? 基本上,我想发送身份验证令牌并取回用户 ID。 我试过这个解决方案:How can I return user ID with token in Django? 但它使用提供的用户名和密码返回令牌,这不是我想要的。
【问题讨论】:
标签: django django-rest-framework
如何从具有身份验证令牌的 Django API 获取用户 ID? 基本上,我想发送身份验证令牌并取回用户 ID。 我试过这个解决方案:How can I return user ID with token in Django? 但它使用提供的用户名和密码返回令牌,这不是我想要的。
【问题讨论】:
标签: django django-rest-framework
#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")
解决问题。基本上创建了视图集并针对当前用户进行排序。
【讨论】:
您使用什么类型的身份验证?
例如,如果你使用来自rest_framework的TokenAuthentication,你可以看看这个类是如何实现请求认证的。
您可以在那里找到方法 authenticate 和 authenticate_credentials,我相信在那里 - 您会找到如何获得用户的答案。
【讨论】:
在 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)
【讨论】: