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