无法通过django rest框架获取带有令牌的用户ID?

问题描述 投票:0回答:1

我正在使用django Django = 2.1.7和rest framework djangorestframework = 3.9.2这是我的登录网址

path('rest-auth/', include('rest_auth.urls')),

验证后,我得到了令牌,但我也需要用户ID。我尝试使用以下代码覆盖rest_framework.authtoken.views.py文件的post方法

    def post(self, request, *args, **kwargs):
        serializer = self.serializer_class(data=request.data,
                                           context={'request': request})
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        token, created = Token.objects.get_or_create(user=user)
        context = {
            'token': token.key,
            'user': user.id
        }
        return Response({'context': context})

请帮我弄清楚如何使用令牌获取用户ID。这是我的大学项目。

注意:我发现堆栈溢出的答案很多,但没有一个是有帮助的。

django python-3.x django-rest-framework authorization token
1个回答
0
投票

使用此Django RestFramework token authentication以使用身份验证。在这里,您可以看到如何进行身份验证,但是如果您希望默认情况下对所有视图使用令牌身份验证,则应将其添加到settings.py文件中,如下所示:

REST_FRAMEWORK = {
   'DEFAULT_AUTHENTICATION_CLASSES': (
       ...
       'rest_framework.authentication.TokenAuthentication',
       ...
    ),
}

或者您应该手动将其添加到需要令牌身份验证的视图中。在此视图中,您可以将经过身份验证的用户命名为request.userself.request.user

from rest_framework.authentication import TokenAuthentication

class ViewSetName(ViewSet):
    authentication_classes = [TokenAuthentication]
© www.soinside.com 2019 - 2024. All rights reserved.