python - 我应该在 Django Rest Framework 中使用 JWT 还是 Basic Token 身份验证?

标签 python django rest token jwt

我即将使用 Django Rest Framework 在我的 API 中实现 token 身份验证。 但我不确定是否应该使用基本 token 内置 DRF 或使用 JSON Web token (JWT) 标准(使用此包 djangorestframework-jwt) 我发现的唯一引用资料是在 DRF 文档中:

Unlike the built-in TokenAuthentication scheme, JWT Authentication doesn't need to use a database to validate a token.

还有其他区别、优点或缺点需要考虑吗?

注意:该 API 将通过网站(使用 angularjs)和移动应用程序访问

最佳答案

无论平台如何,使用 JWT token 都有很多好处。 JWT token base64 将所有用户声明编码在其正文中,并且可以在客户端安全地解码为有状态对象。与为客户端应用程序提供零使用的替代不透明 token 相比,这是非常有益的。登录后,您会立即在客户端中获得原子数据,而无需额外往返 API 来轮询用户信息。

JWT token 是无状态的:无需在服务器端存储或跟踪它们,这在许多服务器上具有更高的水平可扩展性。它们是安全的,因为用于授予它们的私有(private)签名 key 存储在服务器端,任何带有它们的入站 API 调用都只需使用私有(private) key 进行验证,保证它们是由您的 Authorization API 颁发的。

JWT token 在 Angular、React 和任何其他客户端框架中都能很好地工作。因为它们是 JSON,您可以在客户端中对它们进行 base64 解码并将客户端 UI 元素直接绑定(bind)到您的声明 - 拥有管理员声明的人可以看到管理菜单,而没有该声明的用户永远不会知道如果正确实现,菜单存在。

除此之外,JWT token 的行为方式仍与任何不记名 token 相同:

  • 由授权 API 颁发
  • 由客户端存储在 cookie 或本地存储中
  • Authorization header 中传递给资源 API

总之,如果您实现 JWT token ,您将在客户端和服务器之间来回的 N+1 次往返次数减少,扩展工作量也将减少。

关于python - 我应该在 Django Rest Framework 中使用 JWT 还是 Basic Token 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29440014/

相关文章:

python - Pandas 系列中重复出现的子系列摘要

django - Wagtail 每页用户权限

java - 使用 Struts 2 的 RESTful Web 服务

r - 在 R 中使用 GTmetrix REST API v2.0

python - 测试生成器大小然后显示它的 Pythonic 方法是什么?

python - #include <Python.h> - 在 Linux Mint 上终止编译

python - Django 模型属性 - 计算模型多个实例的外键数量

php - 如何使用 Httpful PHP 库

python - 使用 Python 读取 16 位 PNG 图像文件

Django autocomplete-light错误 "'列表'对象没有属性 'startswith'“