如何在 Python 请求中实际使用 DRF + JWT 身份验证

洛奇密码

所以,我的 Django '时间管理' 应用程序有一个休息 API。我正在为我的 API 使用 JWT(JSON Web 令牌)授权。我已经配置了所有设置和视图,但我没有清楚地掌握它实际工作的概念。我的应用程序有一个客户端,它将使用这些身份验证令牌来增加出勤率。

这是我的项目url.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView


urlpatterns = [
    path('', admin.site.urls),
    path('time/', include('timemanagement.urls')),
    path('api-auth', include("rest_framework.urls")),
    path('api/token/', TokenObtainPairView.as_view()),
    path('api/token/refresh/', TokenRefreshView.as_view()),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

问题 1 - 基本上,当我的应用程序首次启动时,我希望它做什么?我假设我需要首先'myserver.com/api/token/'使用我的用户名和密码作为标头发出请求,但我不知道如何使用 Python Requests 库执行此操作。

问题 2 - 假设我的令牌已过期。我的客户端应用程序如何知道这一点?(通过发送带有该令牌的请求,我猜我会得到一个错误?)如果是这样,我该如何处理这个错误以获取新令牌?如果该令牌也过期了,因为'api/token/refresh/'这次只提供一个令牌,没有刷新令牌,该怎么办

此外,每次我的应用程序加载时,我是否必须使用我的管理员凭据从“api/token”请求一个新令牌,或者一个应用程序是否只有一个令牌会一遍又一遍地刷新。我没有使用 POSTMAN,我将使用 Python 请求库。

谢谢你的时间,

丹尼尔·赫珀
  1. 您不api/token使用标头发出请求,而是执行 POST 请求并在正文中传递凭据。使用 Requests 2.4.2,你可以这样做:

    requests.post(
        "http://localhost:8000/api/token/",
        json={"username": "davidattenborough", "password": "boatymcboatface"}
    )
    
  2. 如果您的令牌已过期,您将收到状态代码为 的响应401您调用刷新端点。如果您的刷新令牌已过期,也会出现401. 然后您必须使用您的凭据重新进行身份验证。使用请求,您可以通过以下方式获取状态.status_code

    response = requests.get(...)
    response.status_code
    

    或者,您可以从令牌中读取到期时间并主动刷新/重新进行身份验证。客户端可以读取 JWT 令牌,但不能验证内容。这足以从“exp”字段读取到期时间。您可以为此使用库 PyJWT。像这样的东西:

    response = requests.post(
        "http://localhost:8000/api/token/",
        json={"username": "davidattenborough", "password": "boatymcboatface"}
    )
    tokens = response.json()
    access_expiration = jwt.decode(token["access"], verify=False)["exp"]
    refresh_expiration = jwt.decode(token["refresh"], verify=False)["exp"]
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

应该如何在Django中实现基于JWT的身份验证(drf和simplejwt)?

来自分类Dev

如何在Python中使用JWT实现基于角色的身份验证

来自分类Dev

如何使用自动验证设置Vault JWT身份验证?

来自分类Dev

python后端中近协议的JWT身份验证

来自分类Dev

python中的身份验证如何工作?

来自分类Dev

python中的身份验证如何工作?

来自分类Dev

DRF JWT身份验证对象没有属性“ id”

来自分类Dev

如何以 URL 编码形式获取用户身份验证令牌并使用 Python 接收 JWT 令牌?

来自分类Dev

如何在基于JWT的单一登录身份验证体系结构中实现注销?

来自分类Dev

如何在Node JS JWT身份验证中设置角色?

来自分类Dev

如何在graphene-django GraphQLTestCase中使用django-grahql-jwt进行身份验证?

来自分类Dev

如何在带有supertest,passport和JEST的cookie中使用jwt测试身份验证

来自分类Dev

如何在基于类的视图中使用 django REST JWT 授权和身份验证

来自分类Dev

如何在 JWT 中使用 CakePHP3“身份验证”插件

来自分类Dev

需要有关如何在Express中实际使用Passport身份验证策略的帮助

来自分类Dev

使用JWT进行身份验证

来自分类Dev

使用gundb进行JWT身份验证

来自分类Dev

如何在JWT中通过节点,ws和通行证使用身份验证Web套接字?

来自分类Dev

如何使用python social auth实现facebook身份验证?

来自分类Dev

如何在Python中实际使用NotImplementedError?

来自分类Dev

在Firebase中,如何从自定义jwt令牌身份验证获取当前登录的用户

来自分类Dev

如何使用express-jwt重定向到未经身份验证的用户

来自分类Dev

Elixir:如何使用JOSE.JWK.to_file保存用于Guardian / JWT身份验证的密钥文件

来自分类Dev

使用OWIN和JWT时如何记录身份验证失败原因?

来自分类Dev

如何测试使用JWT身份验证的Node API(通过用户登录获取令牌)

来自分类Dev

如何允许任何用户使用Laravel JWT身份验证访问路由?

来自分类Dev

如何使用jwt slim中间件获取身份验证?

来自分类Dev

使用 HTTP 基本身份验证获取 JWT 令牌的安全性如何?

来自分类Dev

如何使用护照身份验证更新包含 jwt 的 cookie

Related 相关文章

  1. 1

    应该如何在Django中实现基于JWT的身份验证(drf和simplejwt)?

  2. 2

    如何在Python中使用JWT实现基于角色的身份验证

  3. 3

    如何使用自动验证设置Vault JWT身份验证?

  4. 4

    python后端中近协议的JWT身份验证

  5. 5

    python中的身份验证如何工作?

  6. 6

    python中的身份验证如何工作?

  7. 7

    DRF JWT身份验证对象没有属性“ id”

  8. 8

    如何以 URL 编码形式获取用户身份验证令牌并使用 Python 接收 JWT 令牌?

  9. 9

    如何在基于JWT的单一登录身份验证体系结构中实现注销?

  10. 10

    如何在Node JS JWT身份验证中设置角色?

  11. 11

    如何在graphene-django GraphQLTestCase中使用django-grahql-jwt进行身份验证?

  12. 12

    如何在带有supertest,passport和JEST的cookie中使用jwt测试身份验证

  13. 13

    如何在基于类的视图中使用 django REST JWT 授权和身份验证

  14. 14

    如何在 JWT 中使用 CakePHP3“身份验证”插件

  15. 15

    需要有关如何在Express中实际使用Passport身份验证策略的帮助

  16. 16

    使用JWT进行身份验证

  17. 17

    使用gundb进行JWT身份验证

  18. 18

    如何在JWT中通过节点,ws和通行证使用身份验证Web套接字?

  19. 19

    如何使用python social auth实现facebook身份验证?

  20. 20

    如何在Python中实际使用NotImplementedError?

  21. 21

    在Firebase中,如何从自定义jwt令牌身份验证获取当前登录的用户

  22. 22

    如何使用express-jwt重定向到未经身份验证的用户

  23. 23

    Elixir:如何使用JOSE.JWK.to_file保存用于Guardian / JWT身份验证的密钥文件

  24. 24

    使用OWIN和JWT时如何记录身份验证失败原因?

  25. 25

    如何测试使用JWT身份验证的Node API(通过用户登录获取令牌)

  26. 26

    如何允许任何用户使用Laravel JWT身份验证访问路由?

  27. 27

    如何使用jwt slim中间件获取身份验证?

  28. 28

    使用 HTTP 基本身份验证获取 JWT 令牌的安全性如何?

  29. 29

    如何使用护照身份验证更新包含 jwt 的 cookie

热门标签

归档