详解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命令行参数sys.argv使用示例
Jan 28 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
用Pygal绘制直方图代码示例
Dec 07 Python
python @property的用法及含义全面解析
Feb 01 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
更新修改后的Python模块方法
Mar 03 Python
python实现智能语音天气预报
Dec 02 Python
Django之form组件自动校验数据实现
Jan 14 Python
python入门之井字棋小游戏
Mar 05 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
python drf各类组件的用法和作用
Jan 12 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 include_path设置技巧分享
2011/07/03 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
jQuery.parseJSON()函数详解
2019/02/28 jQuery
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
python实现简易通讯录修改版
2018/03/13 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
Django如何实现防止XSS攻击
2020/10/13 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
股权转让意向书
2014/04/01 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
Go 内联优化让程序员爱不释手
2022/06/21 Golang
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers