问题描述
我正在构建一个真实世界的应用程序,用户将主要从Android,iOS设备以及台式机访问该应用程序.
I am building a real world application where users will access the app primarily from Android, iOS devices as well as Desktops.
从我的基础研究中,我已经认识到,与基于会话的身份验证相比,基于令牌的身份验证机制在客户端-服务器模型上更好,更优雅.
From my elementary research, I have realized that token based authentication mechanism is more better and elegant for client-server models as compared to session based authentication.
在Django中,我发现了两种流行的方法-
In Django, I have found two popular ways to do this -
- http://www.django-rest-framework.org /api-guide/authentication/#tokenauthentication
- http://getblimp.github.io/django-rest-framework-jwt /
- http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication
- http://getblimp.github.io/django-rest-framework-jwt/
据我所知,选项2]是1]的扩展,除了令牌是JSON(serialized)形式.我想了解选项1]和2]之间还有其他区别,以及选择其中一种的优缺点.
From what I understood, option 2] is an extension of 1] except that the Token is in the form of JSON(serialized). I would like to understand what other differences there are between option 1] and 2] and the advantages/disadvantages of choosing either.
推荐答案
它们都执行相似的任务,但差异不大.
They both carrying out similar tasks with few differences.
DRF的内置令牌身份验证
- 一个用于所有会话的令牌
- 令牌上没有时间戳
DRF JWT令牌认证
- 每个会话一个令牌
- 每个令牌的过期时间戳记
DRF的内置令牌认证
- 访问数据库以获取与令牌关联的用户
- 验证用户状态
- 验证用户身份
DRF JWT令牌认证
- 解码令牌(获取有效载荷)
- 验证令牌时间戳记(到期)
- 访问数据库以获取与有效负载中的ID相关联的用户
- 验证用户状态
- 验证用户身份
DRF的内置令牌认证
- 通过替换数据库中的令牌(例如:更改密码)来允许强制注销
DRF JWT令牌认证
- 具有到期时间的令牌
- 除非令牌有效,否则没有数据库命中
DRF的内置令牌认证
- 数据库对所有请求均命中
- 所有会话的单个令牌
DRF JWT令牌认证
- 无法在不跟踪数据库的情况下撤回令牌
- 发布令牌后,拥有令牌的任何人都可以提出请求
- 规格是开放的,没有就如何刷新达成共识
这篇关于Django:基于DRF令牌的身份验证VS JSON Web令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!