一、会话定义
从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次绘画
HTTP协议是无状态的,导致绘画状态难以保持
Cookies和session就是为了保持会话状态而诞生的两个存储技术
 
二、Cookies-定义
cookies是保存在客户端浏览器上的存储空间
 
cookies在浏览器上是以键-值对的形式进行存储的,键和值都是以ASCLL字符串的形式存储(不能是中文字符串)
存储的数据带有生命周期
cookies中的数据是按域存储隔离的,不同的域之间无法访问
cookies的内部数据会在每次访问此网址时都会携带到服务器端,如果cookies过大会降低响应速度
 
三、cookies的使用-存储
HttpResponse.set_cookie(key,value='',max_age=None,expiires=None)

key:cookie的名字

valie:cookie的值

max_age:cookie存活时间,秒为单位

expires:具体过期时间

当不指定max_age和expires时,关闭浏览器时此数据失效
 
示例:
删除cookies
HttpResponse.delete_cookie(key) 删除指定key的cookie,如果key不存在则什么也不发生
获取cookies
通过request.COOKIES绑定的字典获取客户端的COOKIES shuj value = request.COOKIES.get(‘key’,‘默认值’)
 
 
四、会话保持-登陆流程
用户在登录页面,点击登录后会把用户名和密码传至后端
服务器拿到账号密码之后,如果验证成功,set cookie
服务器将此次需要存储的cookie发送给前端,接到指令之后浏览器将执行cookie存储
登之后的所有请求,浏览器自动把当前域名下的cookie都发送至服务器
 
五、session
session是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据
针对不同的浏览器,生成不同的存储空间
将不同存储空间的sessionID返给浏览器
然后浏览器将sessionID放在cookie存储
 
使用session需要在浏览器客户端启动cookie,且在cookie中存储session
不同的请求者之间不会共享这个数据,与请求者一一对应
 
 
六、session配置
# 默认配置
1. INSTALLED_APPS列表中添加 django.contrib.session,启用session应用
2. 向MIDDLEWARE列表中添加django.contrib.sessions.middleware.SessionMiddleware,启用session中间件 #可选配置
1.SESSION_COOKIE_AGE
指定sessionID在cookies中保存的时长(默认两周),例如:SESSION_COOKIE_AGE = 60*60*24*7*2 2.SESSION_EXPIRE_BROWSER_CLOSE
浏览器关闭时,session是否失效 默认为False,设置为True浏览器关闭session会失效
PS:Django中的session数据存储在数据库中,所以使用session前确定已执行过migrate
 
七、session的使用
session对象是一个类似于字典的SessionStore类型的对象,可以用类似于字典的方式进行操作
session能够存储如字符串、整型、字典、列表等
1.保存session的值到服务器
request.session['key'] = value
2.获取session的值
request.session['key']
request.session.gey('key',默认值)
3.删除session
del request.sessionp['key']
 
八、Django session的问题
django_session表是单表设计,且该表数据量持续增加【浏览器故意删掉sessionID&过期数据未删除】
可以固定时间执行 python3 manage.py clearsessions【可删除过去的session数据】
 
九、cookies和session对比
cookies存储浏览器,相对不安全
session存储在服务区,相对安全

最新文章

  1. 【XLL 框架库函数】 QuitFramework
  2. jmeter-HTTP COOKIE Manager
  3. 用unity3d+cardboard开发一个全景图片查看器
  4. linux command intro2 vi
  5. MVC4 使用 ckfinder+ckeditor编辑器
  6. AngularJS:何时应该使用Directive、Controller、Service?【新手必看】
  7. Struts2 学习笔记19 类型转换 Part1
  8. NYOJ 2357: 插塔憋憋乐 贪心
  9. log4j配置文件简要记录
  10. 深入解析 SQL Server 高可用镜像实现原理
  11. Spring学习笔记4——AOP
  12. C# 中 equals( ) 和 == 的区别和用法
  13. Spark数据倾斜及解决方案
  14. Jersey入门——注解的使用
  15. GitHub 二次验证收不到短信咋办?
  16. 1002 A+B for Polynomials (25)(25 point(s))
  17. 激活JetBrains的IDE(PhpStorm、WebStorm、IntelliJ IDEA)
  18. mcc,mex,mbuild
  19. UVA-10375 数学
  20. Android背后的设计思想——功能共享机制

热门文章

  1. Win10文件、文件夹被占用解决方法
  2. Spring源码 16 IOC refresh方法11
  3. python与pycharm的安装与“试用”
  4. 基于Vue的前端UI组件库的比对和选型
  5. Android同屏、摄像头RTMP推送常用的数据接口设计探讨
  6. CURL 用法记录
  7. csp每日习题
  8. 洛谷P7112 行列式求值
  9. MySQL数据备份 mysqldump 详解
  10. Java中的StringBuilder和StringBuffer适用场景