详解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实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
深入解析Python编程中JSON模块的使用
Oct 15 Python
Python使用gensim计算文档相似性
Apr 10 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
Python实现的本地文件搜索功能示例【测试可用】
May 30 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
Python应用领域和就业形势分析总结
May 14 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
详解python statistics模块及函数用法
Oct 27 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 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
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
理解javascript模块化
2016/03/28 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
Django数据库表反向生成实例解析
2018/02/06 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python对象与json相互转换的方法
2019/05/07 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
医学实习生自我鉴定
2013/12/12 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
2014司机年终工作总结
2014/12/05 职场文书
教师业务学习材料
2014/12/16 职场文书
骨干教师个人总结
2015/02/11 职场文书
综合管理员岗位职责
2015/02/11 职场文书
人民检察院起诉书
2015/05/20 职场文书