Cookie和令牌的工作原理

时间:2014-05-17 18:19:01

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

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

如果我选择令牌,我计划使用django-rest-framework-jwt。我在这里:

令牌

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

我的问题:

- 我们如何获得令牌?是否像计算哈希码? - 我们在解码令牌后如何获取用户信息? - 如何确定令牌已死? - 可以通过浏览器使用令牌的Web应用程序

缓存

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

我的问题:

- 在我读过的文章中,他们说令牌的优势在于他们有生命。但是饼干也有。那么,cookie和令牌的生命周期之间的区别是什么? - 我们如何识别提出请求的用户?我们存储字典(cookie,用户ID)吗?

2 个答案:

答案 0 :(得分:0)

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

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

直接回答您的问题:

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

  2. 上面的链接也会为您解答这些问题。总而言之,发送回用户的SessionId包括一个ID,用于将该用户标识为已认证或任何其他财产等。

答案 1 :(得分:0)

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

会话身份验证内置于Django中,会话身份验证由Django-rest-framework提供。

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

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

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