详解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构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
Python跳出循环语句continue与break的区别
Aug 25 Python
Python虚拟环境Virtualenv使用教程
May 18 Python
100行python代码实现跳一跳辅助程序
Jan 15 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
Keras loss函数剖析
Jul 06 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
python音频处理的示例详解
Dec 23 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 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 mysql Errcode: 28 终极解决方法
2009/07/01 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
php源码的使用方法讲解
2019/09/26 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
Keras loss函数剖析
2020/07/06 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
Jar包的作用是什么
2014/03/30 面试题
2014年小学美术工作总结
2014/12/20 职场文书
社区工作者个人总结
2015/02/28 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
行政处罚事先告知书
2015/07/01 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
教师培训学习心得体会
2016/01/21 职场文书
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python