Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架中的JWT和自定义身份验证_Python_Django_Django Rest Framework_Django Rest Framework Jwt - Fatal编程技术网

Python Django Rest框架中的JWT和自定义身份验证

Python Django Rest框架中的JWT和自定义身份验证,python,django,django-rest-framework,django-rest-framework-jwt,Python,Django,Django Rest Framework,Django Rest Framework Jwt,我编写了一个非常基本的自定义身份验证类,以实现简单的JWT库来满足我的自定义身份验证需求 然后将访问令牌发送到我的API。默认情况下,这就足够了,但是因为我没有使用默认的Django用户模型,所以我得到了“user not found”。这是因为我需要实现一个自定义的身份验证后端 我需要读取该令牌,以便使用给定的用户id查询数据库,并检查该令牌是否也是有效的。在我的例子中,我固定了数字2 我的API看起来像: class MyAPI(APIView): authentication_c

我编写了一个非常基本的自定义身份验证类,以实现简单的JWT库来满足我的自定义身份验证需求

然后将访问令牌发送到我的API。默认情况下,这就足够了,但是因为我没有使用默认的Django用户模型,所以我得到了“user not found”。这是因为我需要实现一个自定义的身份验证后端

我需要读取该令牌,以便使用给定的用户id查询数据库,并检查该令牌是否也是有效的。在我的例子中,我固定了数字2

我的API看起来像:

class MyAPI(APIView):
    authentication_classes = (ExampleAuthentication,)
    permission_classes = (IsAuthenticated ,)

   def get()...
试试这个:

来自rest\u framework\u simplejwt.authentication导入JWTAuthentication
从rest\u framework\u simplejwt.tokens导入RefreshToken
从django.contrib.auth.models导入用户
user=user.objects.first()
refresh=RefreshToken.for_用户(用户)
原始令牌=str(刷新.访问令牌)
jwt_a=jwt身份验证()
验证的\u令牌=jwt\u a.获取\u验证的\u令牌(原始\u令牌)
repr(已验证的\u令牌)
打印(已验证的\u令牌[“用户\u id”])
这里,我将原始访问令牌提供给JWTAuthentication类的
get\u validated\u token()
方法。它返回带有以下键的字典:
token\u type
jti
user\u id
exp
,以及它们的相关值。
我在示例中使用了默认的Django用户模型,但它应该与您的自定义模型一起使用。

还有更有用的方法,如
get\u header()
。也检查一下。

那么您的问题到底是什么?您需要什么还不清楚使用带有自定义身份验证的简单JWT无法正常工作。我生成令牌并发送它,但如何在自定义身份验证类中读取它以正确地对用户进行身份验证?
class MyAPI(APIView):
    authentication_classes = (ExampleAuthentication,)
    permission_classes = (IsAuthenticated ,)

   def get()...