详解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实现获取某天是某个月中的第几周
Feb 11 Python
Python简单获取自身外网IP的方法
Sep 18 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
python用requests实现http请求代码实例
Oct 31 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
Win10下用Anaconda安装TensorFlow(图文教程)
Jun 18 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 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数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python实现子类调用父类的方法
2014/11/10 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
python——全排列数的生成方式
2020/02/26 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
交通法规咨询中心工作职责
2013/11/27 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
小学生开学感言
2014/02/28 职场文书
吨的认识教学反思
2014/04/27 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
专项资金申请报告
2015/05/15 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
《法国号》教学反思
2016/02/22 职场文书
Python实现简单的猜单词
2021/06/15 Python
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android