django Session 中间件源码解析

Posted liuyinzhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django Session 中间件源码解析相关的知识,希望对你有一定的参考价值。

前言

  什么是Cookie?

  cookie是保存在浏览器端的键值对,该键值对保存了以浏览器作为唯一标识的用户信息。对于通过了django用户认证的浏览器,默认会在浏览器中创建以sessionid为key,value是认证成功后用户的信息。技术分享图片

 

  什么是Session?

    Session与cookie成对存在,由于http协议无状态的原因,无法判断用户是否登录,因此使用cookie+session实现用户的登录认证。所不同的是,由于cookie只能在浏览器保存64字节长度的数据,而session的出现一方面是为了弥补cookie存储长度的限制,另一方面为了将用户信息也保存至服务器达到数据的安全性。简单来说,session是保存在服务端的键值对,该键值对的格式如下图所示:技术分享图片

  总结来说,当用户通过服务端的认证请求之后,服务端维护着一个由其随机生成的随机字符串,该字符串作为不同浏览器的唯一标识,只要是浏览器中的cookie没有超过超时时间,不同用户登录成功之后会对session_data中的数据执行更新操作,从而使以后浏览器再次访问本服务器,会携带sessionid和value作为用户信息进行访问,服务端以此与django_session表中的数据进行登录认证。

 

以上是关于django Session 中间件源码解析的主要内容,如果未能解决你的问题,请参考以下文章

Laravel源码解析之从入口开始

Apache IoTDB源码解析(0.11.2版本):Session的源码解析

Apache IoTDB源码解析(0.11.2版本):Session的源码解析

69-django-forms组件源码刨析cookie与session

69-django-forms组件源码刨析cookie与session

Apache IoTDB源码解析(0.11.2版本):Session执行executeQueryStatement的源码解析