详解Django配置JWT认证方式


Posted in Python onMay 09, 2020

1. 安装 rest_framework + djangorestframework_simplejwt

安装djangorestframework_simplejwt : pip install djangorestframework-simplejwt

安装rest_framework: pip install djangorestframework

djangorestframework_simplejwt 是提供 jwt 的 django 应用。

2. 配置好 rest_framework 后,settings.py 里加上以下内容以支持 jwt认证

REST_FRAMEWORK = {
 'DEFAULT_AUTHENTICATION_CLASSES': [
  'rest_framework_simplejwt.authentication.JWTAuthentication',
 ],
}

3. 写个测试的 view

from rest_framework import permissions
from rest_framework_simplejwt import authentication
class TestView(views.APIView):
 permission_classes = [permissions.IsAuthenticated]
 authentication_classes = (authentication.JWTAuthentication,)
 def get(self, request, *args, **kwargs):
  return Response('ok')

4.urls.py 导入 jwt 的两个 view

from rest_framework_simplejwt.views import (
 TokenObtainPairView, 
 TokenRefreshView,  
)

urlpatterns = [
 ...
 url(r'^api/auth/token/obtain/$', TokenObtainPairView.as_view()), # 需要添加的内容
 url(r'^api/auth/token/refresh/$', TokenRefreshView.as_view()), # 需要添加的内容
 url(r'^api/test/$', TestView.as_view()), # 添加测试views的路由
 ...
]

5. 获取Token

先启动 server 端口为默认的8000

方式一:通过curl

cmd 里运行 curl,获取 token

curl -X POST -H "Content-Type: application/json" -d '{"username": "abab", "password": "abab123456"}' http://localhost:8000/api/auth/token/obtain/

结果返回了 token

{"access":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwidXNlcl9pZCI6MywianRpIjoiZDRlMTJiMjk0M2ZiNGFkYTg1NzZiNWIzMzcyY2RlMjQiLCJleHAiOjE1MzE1MDY5Njl9.S1MPTw359xVK-GpmJary1fZwDsHb8yXsVtyf-tCbHM8","refresh":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsInVzZXJfaWQiOjMsImp0aSI6IjAyYWM3NmQ0MDBkNzRlYzNhOGU5NDM2MWYzYzUzMWQyIiwiZXhwIjoxNTMxNTkzMDY5fQ.rXkYG2SJ74vof3rA38xX-EfMagHxeQRv7ZolszofuHA"}

方式二:通过PostMan 软件

只需要设置如下三个地方就可以了

详解Django配置JWT认证方式

6. 提供 token,获取 testview 的信息

方式一:通过curl

curl \
> -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwidXNlcl9pZCI6MywianRpIjoiZDRlMTJiMjk0M2ZiNGFkYTg1NzZiNWIzMzcyY2RlMjQiLCJleHAiOjE1MzE1MDY5Njl9.S1MPTw359xVK-GpmJary1fZwDsHb8yXsVtyf-tCbHM8" \
> http://localhost:8000/api/test/
"ok"

方式二:通过PostMan 软件

设置如下几个地方,看你的接口是Get请求还是Post请求,自己设置接口请求方式。

Token 填写的是上一步获取到的Token内容

详解Django配置JWT认证方式

默认Token过期时间为5分钟,可以通过设置修改过期时间,设置方法和详细设置文档,去Bigyoung小站(bigyoung.cn)查看进阶内容。

到此这篇关于Django 配置JWT认证方式的文章就介绍到这了,更多相关Django 配置JWT认证方式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
使用python为mysql实现restful接口
Jan 05 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
使用Python函数进行模块化的实现
Nov 15 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
Python输出指定字符串的方法
Feb 06 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
Python 解析简单的XML数据
Jul 24 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
python 利用Pyinstaller打包Web项目
Oct 23 Python
Python如何telnet到网络设备
Feb 18 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 #Python
win10从零安装配置pytorch全过程图文详解
May 08 #Python
Python reduce函数作用及实例解析
May 08 #Python
Python使用sqlite3模块内置数据库
May 07 #Python
Python打印特殊符号及对应编码解析
May 07 #Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 #Python
基于python计算并显示日间、星期客流高峰
May 07 #Python
You might like
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
python绘制双柱形图代码实例
2017/12/14 Python
python 动态调用函数实例解析
2019/10/21 Python
pytorch之添加BN的实现
2020/01/06 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
Pycharm安装python库的方法
2020/11/24 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
财务会计专业毕业生自荐信
2013/10/02 职场文书
装潢设计专业推荐信模板
2013/11/26 职场文书
分居协议书范本
2014/11/03 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
加入学生会自荐书
2015/03/05 职场文书
心灵点滴观后感
2015/06/02 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
Python sklearn分类决策树方法详解
2022/09/23 Python