详解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 常用的安装Module方式汇总
May 06 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
python使用锁访问共享变量实例解析
Feb 08 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
python 进阶学习之python装饰器小结
Sep 04 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+ajax 无刷新删除数据
2010/02/20 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
Javascript学习指南
2014/12/01 Javascript
浅析javascript的return语句
2015/12/15 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
JS typeof fn === 'function' && fn()详解
2020/08/22 Javascript
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
提升Python程序运行效率的6个方法
2015/03/31 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
大学毕业后的十年规划
2014/01/07 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
python manim实现排序算法动画示例
2022/08/14 Python