【问题标题】:How cookies and tokens workcookie 和令牌的工作原理
【发布时间】:2014-07-06 01:11:17
【问题描述】:

我正在设计一个 Web 应用程序,现在我正在研究身份验证功能。我读到有两种方法:cookie 和令牌。我真的不明白这两个是如何工作的。

如果我选择令牌,我打算使用 django-rest-framework-jwt。这就是我所在的位置:

代币

用户发送他的数据(登录名和密码)。应用程序验证数据是否正确并计算令牌,然后将其发送回用户。当用户提出请求时,他在请求中包含令牌。应用程序对请求进行解码,我们得到有关用户的信息。

我的问题:

- 我们如何获得令牌?就像计算哈希码一样吗? - 解码token后如何获取用户信息? - 如何确定令牌已死? - 可以通过浏览器使用使用令牌的网络应用程序

Cookies

与令牌相同,但 cookie 使用不在请求正文中的 HTTP 标头发送。 Cookies 必须存储在服务器端。

我的问题:

- 在我读到的文章中,他们说代币的优势在于它们有生命周期。但饼干也有。那么 cookie 和 token 的生命周期有什么区别呢? - 我们如何识别提出请求的用户?我们是否存储字典(cookie、用户 ID)?

【问题讨论】:

    标签: python django cookies django-rest-framework jwt


    【解决方案1】:

    基于 Cookie 的身份验证(通过将 sessionIds 存储在客户端的 cookie 中)和令牌身份验证之间的区别基本上在于,身份验证令牌是在 http-header 'authentication' 字段中发送的。这更灵活,因为有些 REST 客户端(手机上的本地客户端等)根本不支持 cookie 的概念。

    Session Authentication 是 Django 内置的,Session 认证是由 Django-rest-framework 提供的。

    Django-rest-framework 具有将令牌传递给客户端的内置方法,但欢迎您实现自己的设备。

    令牌在从数据库中删除之前一直有效。同样,您可以在此处推出自己的自动失效解决方案。

    django-rest-framework 文档非常详细地介绍了它支持的不同身份验证机制。见http://www.django-rest-framework.org/api-guide/authentication

    【讨论】:

      【解决方案2】:

      我相信你所说的“令牌”与https://docs.djangoproject.com/en/dev/topics/http/sessions/ 上的“会话”相同。

      与您所说的类似,会话计算哈希码/id 以发送回用户以识别为经过身份验证的用户等。

      直接回答您的问题:

      1. 会话和 Cookie 协同工作。一旦 Django 生成 SessionId,它就会通过使用 cookie 存储在用户的计算机上,同时它也记录在 django 后端。因此,我不确定您的问题是否有效。尝试阅读http://www.tangowithdjango.com/book/chapters/cookie.html

      2. 上面的链接也为您解答了这个问题。总而言之,发回给用户的 SessionId 包括一个 ID,用于标识该用户已通过身份验证或任何其他属性等。

      【讨论】:

        猜你喜欢
        • 2015-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多