JWT的快速使用
jwt的签发和认证
保证安全
签发--登陆过程:
1、用基本信息公司信息存储json字典,采用base64算法得到 头字符串
2、用关键信息存储json字典,采用base64算法得到 荷载字符串,过期时间,用户id,用户名
3、用头、体加密字符串通过加密算法+秘钥加密得到 签名字符串,拼接成token返回给前台
如果没有第三方模块帮助我们做,我们就自己做
认证---访问需要登陆的接口
1、将token按 . 拆分为三段字符串,第一段 头加密字符串 一般不需要做任何处理
2、第二段 体加密字符串,要反解出用户主键,通过主键从User表中就能得到登录用户,过期时间是安全信息,确保token没过期
3、再用 第一段 + 第二段 + 加密方式和秘钥得到一个加密串,与第三段 签名字符串 进行比较,通过后才能代表第二段校验得到的user对象就是合法的登录用户
Django中的快速使用JWT
Django中的两个JWT
1、django-rest-framework-jwt
地址:https://github.com/jpadilla/django-rest-framework-jwt
2、django-rest-framework-simplejwt
地址:https://github.com/jazzband/djangorestframework-simplejwt
Django中快速使用
1、签发
第一步:
pip3 install djangorestframework-jwt
第二步:在路由中配置
from rest_framework_jwt.views import obtain_jwt_token urlpatterns = [ path('login/', obtain_jwt_token), ]
第三步:使用接口测试工具发送post请求到后端,就能基于auth的user表签发token
2、认证
在视图类中配置:认证类+权限类
from rest_framework_jwt.authentication import JSONWebTokenAuthentication from rest_framework.permissions import IsAuthenticated class BookView(GenericViewSet,ListModelMixin): # JSONWebTokenAuthentication :rest_framework_jwt模块写的认证类 authentication_classes = [JSONWebTokenAuthentication,] # 需要配合一个权限类 permission_classes = [IsAuthenticated,]
JWT定制返回格式
第一步:写一个函数--->返回什么格式,前端就能看到什么格式
def jwt_response_payload_handler(token, user=None, request=None): return { 'code': 100, 'msg': "登陆成功", 'token': token, 'username': user.username }
第二步:在配置文件中配置
# jwt模块的配置文件,统一放在JWT_AUTH JWT_AUTH = { 'JWT_RESPONSE_PAYLOAD_HANDLER': 'app01.utils.jwt_response_payload_handler', }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构