Session
1、Session和Cookie的作用有点类似,都是为了存储用户相关的信息。不同的是:
⑴Cookie是存储在本地浏览器中(实际存在的)
⑵Session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现
⑶虽然Session实现方式不一致,但是它们的目的都是服务器为了方便存储数据的。Session的出现,是为了解决Cookie存储数据不安全的问题
2、Cookie是在浏览器端保存键值对数据,而Session是在服务器端保存键值对数据
⑴不管是Cookie还是Session都是以键值对的形式存在的,键名任意,值一般都是用户信息相关的数据
3、Session的使用依赖Cookie:在使用Session后,会在Cookie中存储一个Sessionid的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到Sessionid后,会根据这个值找出这个请求者的Session
4、Cookie和Session的使用:Web开发发展至今,Cookie和Session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业中,一般有两种存储方式
⑴存储在服务器端:如果用户已经登录,则服务器会在Cookie中存储一个Sessionid,下次再请求的时候,会把这个Sessionid携带上来,服务器根据Sessionid在Session库中获取用户的Session数据(数据中一般都会包含用户信息)。就能知道用户是谁了
⑵将Session数据加密,然后存储在Cookie中,这种专业术语叫client side session。flask框架默认采用的就是这种方式
5、Session是在用户访问的时候,创建一个随机的字符串,保存在客户端的Cookie里面,默认名是sessionid,然后在服务器端,给这个字符串创建一个键值对,这个字符串的值又可以是一个字典结构,保存所有相关的信息
⑴因此可以这么理解,Session是服务器端的一个巨大的键值对,每一个key都对应一个登录用户的随机字符串,每个key都有自己的value,这个value同样是一个字典,包括这个登录账号的所有信息
Django中Session的存储
1、在Django中session信息采用的是存储在服务器端的方式:存储在数据库中
2、Django把session信息默认存储到数据库中,当然也可以存储到其他地方,比如缓存中,文件系统中等。存储在服务器的数据会更加安全,不容易被窃取。但存储在服务器中也有一定的弊端,就是会占用服务器的资源。但是服务器已经发展至今,存一些Session信息还是绰绰有余的
3、Django中Session键值对数据保存:
⑴session的键值对数据默认保存在django项目的一张数据库表中(表名为:django_session)
⑵django_session这个表在配置数据库并生成具体的表时会自动生成:Django默认配置好的,只需要执行命令生成具体的表就好了
4、Django会在表中会根据Sessionid来提取指定的Session数据
⑴浏览器第一次访问时生成Sessionid和具体的Session数据,将Sessionid和Session数据保存到数据库中,再把这个S