DRF使用JWT进行用户认证
1. 首先需要安装第三方依赖包
pip install djangorestframework-jwt
2. 在Django的settings文件中 配置全局的JWT认证类
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication', # jwt认证组件
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
}
import datetime
JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=3), # jwt中有效的时间
'JWT_ALLOW_REFRESH': True, # 是否允许用户获取新的token值
}
3. 实现登录接口
from rest_framework_jwt.views import obtain_jwt_token urlpatterns = [
path('login/', obtain_jwt_token), # jwt版用户登录
]
这个认证类是我们安装的第三方模块中提供的 它会帮助我们校验用户名和密码是否正确 如果正确的话 会给我们返回一个随机的token值

4. 我们可以在需要登录以后才能访问的接口中 添加局部权限类 permission_classes
class UserView(ModelViewSet):
""" 用户管理 增删改查
list: 用户列表
create: 添加用户
retrieve: 用户详细信息
partial_update: 修改用户信息(可只传递要修改的字段/或全部传递也可以)
locking_user: 锁定用户
destroy: 删除用户
"""
permission_classes = [IsAuthenticated, ] # 需用户登录之后才可访问
queryset = models.UserInfo.objects.filter(is_delete=False, is_active=True)
serializer_class = TeacherRegisterModelSerializer def locking_user(self, request, pk):
""" 锁定用户 锁定用户之后 该用户就无法登录了 """
res = {
"status": False,
'msg': ""
} user_obj = models.UserInfo.objects.filter(pk=pk).first()
if not user_obj:
res['msg'] = '没有该用户' user_obj.is_active = False
user_obj.save() res['status'] = True
res['msg'] = '锁定用户成功'
return Response(res)
5. 我们再次访问需要登录的接口时 在请求的Headers中添加一个名为Authorization的键 值为jwt token(token为登录成功后给我们返回的token值)

这样就成功在DRF中使用JWT完成用户认证了 ~
DRF使用JWT进行用户认证的更多相关文章
- Node.js 使用JWT进行用户认证
代码地址如下:http://www.demodashi.com/demo/13847.html 运行环境 该项目基于 node(v7.8.0版本以上) 和 mongodb 数据库,因此电脑上需要安装这 ...
- ASP.NET Core 2.2 : 二十六. 应用JWT进行用户认证
本文将通过实际的例子来演示如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新方案(ASP.NET Core 系列目录) 一.什么是JWT? JWT(json web token ...
- 应用JWT进行用户认证及Token的刷新
本文将通过实际的例子来演示如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新方案(ASP.NET Core 系列目录) 一.什么是JWT? JWT(json web token ...
- ASP.NET Core 2.2 : 二十六. 应用JWT进行用户认证及Token的刷新
来源:https://www.cnblogs.com/FlyLolo/p/ASPNETCore2_26.html 本文将通过实际的例子来演示如何在ASP.NET Core中应用JWT进行用户认证以及T ...
- 前后端分离下用jwt做用户认证
0 前后端分离下的用户信息认证 前端使用Vue+axios,后端使用SpringBoot+SpringSecurity. 为了解决http无状态的问题,我采用jwt(json web token)保存 ...
- 【laravel】基于jwt实现用户认证
安装及基础配置 使用 composer 安装 # 建议使用1.0以上版本 composer require tymon/jwt-auth .*@rc 进行一些配置 有些文档会说要添加 Tymon\JW ...
- Laravel 5 中使用 JWT(Json Web Token) 实现基于API的用户认证
在JavaScript前端技术大行其道的今天,我们通常只需在后台构建API提供给前端调用,并且后端仅仅设计为给前端移动App调用.用户认证是Web应用的重要组成部分,基于API的用户认证有两个最佳解决 ...
- ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)
上一章分享了如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新,本章继续进行下一步,用户授权.涉及到的例子也以上一章的为基础.(ASP.NET Core 系列目录) 一.概述 ...
- DRF的JWT用户认证
目录 DRF的JWT用户认证 JWT的认证规则 JWT的格式 JWT认证的流程 JWT模块的导入为 JWT的使用 DRF的JWT用户认证 从根本上来说,JWT是一种开放的标准(RFC 7519), 全 ...
随机推荐
- Kubernetes 实战——升级应用(Deployment)
一.更新运行在 Pod 内的应用程序 1. 修改 Pod 模板 将导致应用程序在一定时间内不可用 2. 修改 Service 的 Pod 选择器 需要同时运行两倍的 Pod 3. 滚动升级 应用程序需 ...
- 『动善时』JMeter基础 — 46、使用Badboy工具录制JMeter脚本
目录 1.使用Badboy录制JMeter脚本 2.使用Badboy参数化配置 3.解决"当前页面的脚本发生错误"提示框 4.总结 1.使用Badboy录制JMeter脚本 打开B ...
- huge page 能给MySQL 带来性能提升吗?
最近一直在做性能压测相关的事情,有公众号的读者朋友咨询有赞的数据库服务器有没有开启huge page,我听说过huge page会对性能有所提升,本文就一探究竟.对过程没有兴趣的可以直接看结论. 二 ...
- 【dp】动归总结
原标题:[DP专辑]ACM动态规划总结 转载自 http://blog.csdn.net/cc_again?viewmode=list http://blog.csdn.net/cc_again/ar ...
- 远程代码执行MS08-067漏洞复现失败过程
远程代码执行MS08-067漏洞复现失败过程 漏洞描述: 如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码. 在微软服务器系统上,攻击者可能未经身份验证即可利用此漏洞运行 ...
- 关于XXE漏洞
XXE漏洞 0x01.xxe是什么 介绍 XXE 之前,我先来说一下普通的 XML 注入,这个的利用面比较狭窄,如果有的话应该也是逻辑漏洞 1.1xml定义 XML用于标记电子文件使其具有结构性的标记 ...
- 1.5Java、万维网以及其他
要点提示:Java是一种功能强大和多用途的编程语言,可用于开发运行在移动设备.台式计算机以及服务器端的软件.
- Murmur3 Hash 128位java和C#方法
java调用com.google.guava 引入依赖 <dependency> <groupId>com.google.guava</groupId> <a ...
- CentOS-Docker搭建Nextcloud
下载镜像 $ docker pull nextcloud 运行镜像 $ docker run -d --restart=unless-stopped --name nextcloud -v /home ...
- Html:id,name,class之间的有什么区别?
name 一个name可以同时对应多个控件,比如checkbox和radio,主要用于获取提交表单的某表单域信息, 作为可与服务器交互数据的HTML元素的服务器端的标示,比如input.select. ...