我正在使用django Django = 2.1.7和rest框架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。这是我的大学项目。
注意:我在堆栈溢出时发现了很多答案,但没有用。
答案 0 :(得分:0)
使用此Django RestFramework token authentication以便使用身份验证。在这里,您可以看到如何进行身份验证,但是,如果您希望默认情况下对所有视图都使用令牌身份验证,则应将其添加为settings.py
文件中:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
...
'rest_framework.authentication.TokenAuthentication',
...
),
}
,或者您应该将其手动添加到需要令牌认证的视图中。并且在此视图中,您可以通过request.user
或self.request.user
身份认证用户。
from rest_framework.authentication import TokenAuthentication
class ViewSetName(ViewSet):
authentication_classes = [TokenAuthentication]