详解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爬虫之打包生成exe文件
Nov 06 Python
用Python解决计数原理问题的方法
Aug 04 Python
几种实用的pythonic语法实例代码
Feb 24 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 Python
Python调用Redis的示例代码
Nov 24 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制作静态网站的模板框架(一)
2006/10/09 PHP
php数组去重实例及分析
2013/11/26 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
两个SUBMIT按钮,如何区分处理
2006/08/22 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
vue实现分页加载效果
2019/12/24 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
Django多数据库的实现过程详解
2019/08/01 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
Hotels.com中国区:好订网
2016/08/18 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
简述数组与指针的区别
2014/01/02 面试题
应届生会计求职信
2013/11/11 职场文书
污水厂厂长岗位职责
2014/01/04 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
年度考核个人总结
2015/03/06 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
校园广播稿范文
2015/08/19 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android