详解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发布模块的步骤分享
Feb 21 Python
Python3搜索及替换文件中文本的方法
May 22 Python
Python协程的用法和例子详解
Sep 09 Python
Python中实现switch功能实例解析
Jan 11 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
Jupyter notebook如何修改平台字体
May 13 Python
python和JavaScript哪个容易上手
Jun 23 Python
Python正则re模块使用步骤及原理解析
Aug 18 Python
如何用python写个模板引擎
Jan 14 Python
python代码实现扫码关注公众号登录的实战
Nov 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横向重复区域显示二法
2008/09/25 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
养殖人员的创业计划书范文
2013/12/26 职场文书
学校督导评估方案
2014/06/10 职场文书
员工团队活动方案
2014/08/28 职场文书
运动会广播稿100字
2014/09/14 职场文书
2014年店长工作总结
2014/11/17 职场文书
降价通知函
2015/04/23 职场文书
商标侵权律师函
2015/05/27 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
公司年会开场白
2015/06/01 职场文书
pycharm代码删除恢复的方法
2021/06/26 Python