gpt4 book ai didi

Django 休息框架 : can't get user id from given token

转载 作者:行者123 更新时间:2023-11-29 12:01:59 25 4
gpt4 key购买 nike

我正在处理我的第一个 Django 项目。我正在尝试创建一个通过发布请求接受 token 的 api,并在 public_authtoken_token 表中查询相关的用户 ID。

我使用的数据库是 PostgreSQL 10.6。 Django版本为2.1.1,DRF为3.8.2

这是我的“查看”代码:

from rest_framework.authtoken.models import Token
from rest_framework.views import APIView

class MyView(APIView):

def post(self, request, format=None):

my_token = request.META.get('HTTP_AUTHORIZATION')
user_id = Token.objects.get(key=my_token).user_id
return Response(status=status.HTTP_200_OK)

我的问题是当我这样做时出现以下异常

user_id = Token.objects.get(key=http_token).user_id :

rest_framework.authtoken.models.Token.DoesNotExist: Token matching query does not exist.

现在,我已经验证了我用来测试它的 token 在数据库中并且它们具有有效的 user_id。此外,我还验证了我从 HTTP 请求中读取的 token 也是正确的。我做错了什么吗?

最佳答案

如果您调试并看到您使用 request.META.get('HTTP_AUTHORIZATION') 检索的值,您会注意到它是这样的:

JWT eyJhbGciOiAiSFMyNTYiLCAidHlwIj

该值和前缀将根据您的 django rest 身份验证后端而有所不同。但是您可以使用以下代码简单地修复此错误:

from rest_framework.authtoken.models import Token
from rest_framework.views import APIView

class MyView(APIView):

def post(self, request, format=None):
my_token = request.META.get('HTTP_AUTHORIZATION').split()[1]
user_id = Token.objects.get(key=my_token).user_id
return Response(status=status.HTTP_200_OK)

关于Django 休息框架 : can't get user id from given token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53653590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com