详解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 相关文章推荐
CentOS7下python3.7.0安装教程
Jul 30 Python
python的concat等多种用法详解
Nov 28 Python
Python读写文件基础知识点
Jun 10 Python
详解python调用cmd命令三种方法
Jul 08 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
Python django框架 web端视频加密的实例详解
Nov 20 Python
python中最小二乘法详细讲解
Feb 19 Python
pytorch __init__、forward与__call__的用法小结
Feb 27 Python
python实战之90行代码写个猜数字游戏
Apr 22 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可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
jQuery前台数据获取实现代码
2011/03/16 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
vue组件生命周期详解
2017/11/07 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
vue代理和跨域问题的解决
2018/07/18 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
简洁的十分钟Python入门教程
2015/04/03 Python
python 图像平移和旋转的实例
2019/01/10 Python
Python气泡提示与标签的实现
2020/04/01 Python
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
门卫人员岗位职责
2013/12/24 职场文书
职业规划实施方案
2014/06/10 职场文书
收款授权委托书
2014/10/02 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
Python学习之包与模块详解
2022/03/19 Python
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers