json - Django : DRF Token based Authentication VS JSON Web Token

标签 json django rest django-rest-framework tastypie

我正在构建一个真实世界的应用程序,用户将主要从 Android、iOS 设备以及桌面访问该应用程序。

从我的基础研究中,我意识到与基于 session 的身份验证相比,基于 token 的身份验证机制对于客户端-服务器模型来说更好更优雅。

在 Django 中,我发现了两种流行的方法来做到这一点 -

  • http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication
  • http://getblimp.github.io/django-rest-framework-jwt/

  • 据我了解,选项 2] 是 1] 的扩展,除了 Token 是 JSON(序列化)的形式。我想了解选项 1] 和 2] 之间还有哪些其他差异以及选择其中任何一个的优点/缺点。

    最佳答案

    他们都执行类似的任务,几乎没有区别。
    token
    DRF的内置 token 认证

  • 一个 token 用于所有 session
  • token 上没有时间戳

  • DRF JWT token 认证
  • 每个 session 一个 token
  • 每个 token 的到期时间戳

  • 数据库访问
    DRF的内置 token 认证
  • 获取与 token 关联的用户的数据库访问权限
  • 验证用户状态
  • 认证用户

  • DRF JWT token 认证
  • 解码 token (获取有效负载)
  • 验证 token 时间戳(到期)
  • 数据库访问以获取与有效负载中的 id 关联的用户
  • 验证用户状态
  • 认证用户

  • 优点
    DRF的内置 token 认证
  • 允许通过替换数据库中的 token 来强制注销(例如:密码更改)

  • DRF JWT token 认证
  • 具有过期时间的 token
  • 除非 token 有效,否则不会命中数据库

  • 缺点
    DRF的内置 token 认证
  • 数据库命中所有请求
  • 所有 session 的单一 token

  • DRF JWT token 认证
  • 如果不在数据库中跟踪,则无法调用 token
  • token 发出后,任何拥有 token 的人都可以发出请求
  • 规范可以解释,关于如何刷新没有共识
  • 关于json - Django : DRF Token based Authentication VS JSON Web Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31600497/

    相关文章:

    python - 部署到 EC2 后,Django TemplateDoesNotExist at/debug_toolbar/base.html

    java - JAX-RS Jersey XML <-> java.util.List

    rest - 在 Unity3d 中运行 REST 服务器

    python - Django-如何确定 ModelForm init 中的字段类型?

    json - 在 JQ 中按正则表达式过滤

    c# - 我可以使用 Newtonsoft.Json 进行严格的反序列化吗?

    java - 对于 GF4 和 Jackson,未找到 Media type=application/json 的 MessageBodyWriter

    django - Django Elasticsearch dsl drf或查询

    .net - WCF REST 服务客户端调用映射到错误的 Uris

    sql - Bigquery - json_array 来自字段的额外多个元素