详解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生成指定尺寸缩略图的示例
May 07 Python
剖析Python的Twisted框架的核心特性
May 25 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
python实现kmp算法的实例代码
Apr 03 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
Django框架实现分页显示内容的方法详解
May 10 Python
Django中ORM外键和表的关系详解
May 20 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
python 实现单例模式的5种方法
Sep 23 Python
python用700行代码实现http客户端
Jan 14 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
VOLVO车载收音机
2021/03/02 无线电
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
表格 隔行换色升级版
2009/11/07 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
合同专员岗位职责
2013/12/18 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
调研汇报材料范文
2014/08/17 职场文书
党员民主生活会材料
2014/12/15 职场文书
大二学年个人总结
2015/03/03 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
学习党章心得体会2016
2016/01/15 职场文书