详解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中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
python实现指定字符串补全空格的方法
Apr 30 Python
Python过滤列表用法实例分析
Apr 29 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
Python元组常见操作示例
Feb 19 Python
python处理“
Jun 10 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
Python tkinter布局与按钮间距设置方式
Mar 04 Python
Python一行代码实现自动发邮件功能
May 30 Python
Python基础之变量的相关知识总结
Jun 23 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检测移动设备类mobile detection使用实例
2014/04/14 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
php中使用websocket详解
2016/09/23 PHP
js 获取Listbox选择的值的代码
2010/04/15 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
js单例模式的两种方案
2013/10/22 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
设计总监岗位职责
2013/12/07 职场文书
工业学校毕业生自荐信范文
2014/01/03 职场文书
公司应聘自荐书
2014/06/14 职场文书
广播体操口号
2014/06/18 职场文书
2014年个人售房协议书
2014/10/30 职场文书
2014年项目工作总结
2014/11/24 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
实习科室评语
2015/01/04 职场文书
同事去世追悼词
2015/06/23 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP