首页 > 其他分享 >djangorestframework-jwt使用

djangorestframework-jwt使用

时间:2023-04-26 11:34:16浏览次数:39  
标签:jwt JWT token djangorestframework api 使用 data response

服务端配置

安装第三方库

pip install djangorestframework-jwt

在settings.py中配置JWT

## 可以在这里配置全局的认证,也可以在视图中单独配置。
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        # 其他身份验证方法(可选)
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
        # 其他权限(可选)
    ],
}

JWT_AUTH = {
    'JWT_SECRET_KEY': 'your-secret-key',
    'JWT_ALGORITHM': 'HS256',
    'JWT_VERIFY': True,
    'JWT_VERIFY_EXPIRATION': True,
    'JWT_EXPIRATION_DELTA': datetime.timedelta(hours=1),
    'JWT_ALLOW_REFRESH': True,
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
    'JWT_AUTH_HEADER_PREFIX': 'JWT',
}

在urls.py中配置路由

from django.urls import path

urlpatterns = [
    # ...
    path(r"api-token-auth/", obtain_jwt_token, name="api-token-auth"),
]

客户端(Python)代码示例:

import requests

username = input("请输入用户名:")
password = input("请输入密码:")

response = requests.post(
    'http://localhost:8000/api/token/',
    data={'username': username, 'password': password}
)
response_data = response.json()

### 将JWT Token保存在客户端中,用于后续的请求
token = response_data['token']
headers = {'Authorization': f'JWT {token}'}

# 发送请求时带上JWT Token
response = requests.get(
    'http://localhost:8000/api/test/',
    headers=headers
)
response_data = response.json()

标签:jwt,JWT,token,djangorestframework,api,使用,data,response
From: https://www.cnblogs.com/LAlexH/p/17355104.html

相关文章

  • python 使用selenium 不开启浏览器
    selenium不启动浏览器模式打开浏览器再启动会浪费时间,对爬虫的性能也是个影响,还有一种就是不打开浏览器。如下参数是针对chrome的全局参数,不能自定义参数。fromseleniumimportwebdriver#还有一些其他的参数'''#添加UAoptions.add_argument('user-agent="MQQBrowser/26......
  • 关于使用tcpdump命令抓包时网络接口的查询与指定
    第一步:首先可以通过tcpdump命令的--list-interfaces选项,列出系统中的所有网络接口(这个与ipaddr列出的还有略有点点差异)-D--list-interfacesPrintthelistofthenetworkinterfacesavailableonthesystemandonwhichtcpdumpcancapturepackets.......
  • 使用pycuda替换字符串,使用cuda替换字符串
    写一个python的cuda程序,实现字符串列表的字符串替换,把所有的123替换成xinyuuliu 以下是一个简单的PythonCUDA代码示例,用于实现字符串列表的字符串替换。它使用了NVIDIACUDA编程模型的一些基本概念和语法。#导入必要的模块importpycuda.autoinitimportpycuda.drive......
  • JEECG使用反向代理 积木报表无法正常使用的解决方法
    发现JEECG反向代理开启后  重设了Host头,导致积木框架的数据接口url拼接异常Nginx配置增加:#通过反向代理访问积木报表,Jeecg框架内的菜单配置需要写成绝对路径:http://localhost:3000/jeecg-boot/jmreport/list?token=${token}location^~/jeecg-boot/jmreport/{#p......
  • vue3中useRouter和useRoute的使用
    vue3路由新玩法useRoute和useRouter详解原文链接原来的vue2路由是通过this.$route和this.$router来控制的。现在vue3有所变化,useRoute相当于以前的this.$route,而useRouter相当于this.$router一、useRouter手动控制路由变化import{useRouter}from'vue-router'exportdef......
  • uniapp页面中的按钮使用分享功能
    https://www.codenong.com/cs109827730/......
  • golang 使用 net包实现 tcp server 示例
    之前用到golang进行网络编程时,主要就是使用net/http和web框架gin,这些网络库的底层其实也还是用的标准库自带的net包,很多是对路由或者其他做封装,而且golang本身的长处之一也是网络IO的处理,这也得益于其底层的IO模型,今天我们分享的是基于TCPserver/client的简单实现,后......
  • Python | raise的使用
    当程序出现错误,Python会自动引发异常,Python允许我们在程序中手动设置异常,使用raise语句即可。一旦执行了raise语句,raise后面的语句将不能执行。我们从来都是想方设法地让程序正常运行,为什么还要手动设置异常呢?首先要分清楚程序发生异常和程序执行错误,它们完全是两码事,程序由于......
  • VUE在Return中定义变量,放在方法中使用
    Return中定义CSS变量在Return中定义一个比变量data(){return{'--mg_top1':'3vh',},}在methods方法使用this.$el.style.setProperty('--mg_top1','3.6vh') 在CSS中使用.mg_top{margin-top:var(--mg_top1)......
  • [开发者必读]如何使用MyEclipse仪表板?
    MyEclipsev2022.1.0正式版下载MyEclipse技术交流群:742336981欢迎一起进群讨论MyEclipse 仪表板是一个很好的项目起点,无论是开始一个新项目、在源代码控制中处理一个项目,还是寻找示例项目来学习一些新东西。MyEclipseDashboard视图可以让开发者快速访问常用的功能、帮助文......