Django - DRF自带的token认证和JWT区别

问题重现

当查看DRF 文档时发现DRF内置的token是存储在数据库里,这和我在网上搜索资料时认识的token-based authentication有出入。

from rest_framework.authtoken.models import Token # 有Token这个model

原因

其实网上大多数的token是json web token,是和DRF自带的token不同的。JWT只存储在客户端。
引用DRF文档:

JSON Web Token is a fairly new standard which can be used for token-based authentication. Unlike the built-in TokenAuthentication scheme, JWT Authentication doesn‘t need to use a database to validate a token. A package for JWT authentication is djangorestframework-simplejwt which provides some features as well as a pluggable token blacklist app.

参考

  1. https://www.django-rest-framework.org/api-guide/authentication/#json-web-token-authentication
  2. https://stackoverflow.com/questions/57442082/why-django-rest-framework-stores-token-in-database?noredirect=1#comment101361728_57442082
  3. https://stackoverflow.com/questions/29440014/should-i-use-jwt-or-basic-token-authentication-in-django-rest-framework
  4. https://stackoverflow.com/questions/27578726/appropriate-choice-of-authentication-class-for-python-rest-api-used-by-web-app
  5. https://stackoverflow.com/questions/31600497/django-drf-token-based-authentication-vs-json-web-token

原文地址:https://www.cnblogs.com/allen2333/p/11337230.html

时间: 2024-08-02 03:31:40

Django - DRF自带的token认证和JWT区别的相关文章

django drf框架中的user验证以及JWT拓展的介绍

登录注册是几乎所有网站都需要去做的接口,而说到登录,自然也就涉及到验证以及用户登录状态保存,最近用DRF在做的一个关于网上商城的项目中,引入了一个拓展DRF JWT,专门用于做验证和用户状态保存.这个拓展比传统的CSRF更加安全.先来介绍一下JWT认证机制吧! Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声明一般被用来在身

自定义路由组件,Django的admin后台管理,DRF的三大认证,jwt认证

目录 一.自定义路由组件 1. 为什么要自定义路由组件 2. 自定义路由组件实例 二.Django的admin后台管理 三.DRF的三大认证组件概括 1. 认证组件 2. 权限组件 3. 频率组件 四.Django中的用户权限管理 五.jwt认证 1. jwt认证和普通session认证的区别 2. jwt认证介绍 (1)jwt的原理 (2)jwt三部分的内容 3. jwt的签发算法 (1)第一步:头部算法 (2)第二步:载荷部分的算法 (3)第三步:签名部分的算法 (4)第四步:连接生成tok

【django后端分离】Django Rest Framework之认证系统之redis数据库的token认证(token过期时间)

1:登录视图 redis_cli.py文件: import redis Pool= redis.ConnectionPool(host='localhost',port=6379,decode_responses=True) 登录视图文件:import redisfrom utils.redis_cli import Pool    # 创建redis连接池 class UserLogin(APIView): """ 用户登陆认证: 登录成功更新token值,并且返回给前端,

Token认证,如何快速方便获取用户信息

背景 我们有一个Web项目,这个项目提供了很多的Rest API.也做了权限控制,访问API的请求必须要带上事先认证后获取的Token才可以. 认证的话就在Filter中进行的,会获取请求的Token进行验证,如果成功了可以得到Token中的用户信息,本文的核心就是讲解如何将用户信息(用户ID)优雅的传递给API接口(Controller). 方式一(很挫) 我们在Filter中进行了统一拦截,在Controller中获取用户ID的话,仍然可以再次解析一遍Token获取用户ID @GetMapp

token认证

token认证 文章出处:https://segmentfault.com/a/1190000014527692 一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造.攻击者盗用你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全. 二.CSRF攻击原理 三.防御CSRF的策略:token认证 1.token验证

Django 大神带你飞系列~走进Django

Django 大神带你飞系列~走进Django Django开端 1.0 django 开端 1.1 web应用的本质 1.2 HTTP协议 1.3 路由系统 1.4 Django的安装和启动 1.5 django的路由介绍 1.6 Django的模版介绍 1.7 Django的网页操作流程 1.8 Django的链接数据库操作 Django的路由系统 1.0 Django的路由系统 1.1 创建app 1.2 路由的分组 1.3 路由的分法 Django的orm模型 1.0 Django 的o

Selenium + Chrome Diver使用带用户名密码认证的HTTP代理的方法

默认情况下,Chrome的--proxy-server="http://ip:port"参数不支持设置用户名和密码认证.这样就使得"Selenium + Chrome Driver"无法使用HTTP Basic Authentication的HTTP代理.一种变通的方式就是采用IP地址认证,但在国内网络环境下,大多数用户都采用ADSL形式网络接入,IP是变化的,也无法采用IP地址绑定认证.因此迫切需要找到一种让Chrome自动实现HTTP代理用户名密码认证的方案.

struts2 自带的 token防止表单重复提交拦截器

在struts2中,我们可以利用struts2自带的token拦截器轻松实现防止表单重复提交功能! 1. 在相应的action配置中增加:  <interceptor-ref name="token"></interceptor-ref> <result name="invalid.token">/error.jsp</result> 2. 增加error.jsp文件,代码如下:  <h1>禁止重复提交&l

微信token认证源码分享(c#版)

在开发时遇到一个问题: 上线后提交申请微信提示"您的服务器没有正确响应token验证...",我查看日志发现根本就没有接收到来自微信的参数. 后来我又记录了微信请求方式和请求的字符串,想看看微信服务器到底有没有给我的服务器响应请求.结果是有的.并且通过了. 代码就添加了Request.HttpMethod和Request.QueryString没变,但不晓得怎么回事. /// <summary> 按照api说明对signature进行校验,校验成功返回参数echostr &