## 一次请求的周期
– 客户端向服务器发送数据 Request
– 主动操作
– 服务端向客户端发送数据 Response
– 响应操作
– 没有请求,就不会有响应
– 从Request 到 Response结束
### 会话技术
– 为什么出现,有啥作用?
– 因为Http协议是一个无状态协议,两次登录之间没有任何联系,想让它们之间有关系,就有了会话技术。
– 相当于变相延长了请求周期
– 保存了用户的关键信息
(1)客户端会话技术——cookie
– 数据存储在客户端的
– 数据存储形式是: key-value,也就是键–值的格式。
– Cookie隔离
– 不同的域名、不同的ip之间cookie是隔离的,不可能你在这个浏览器登录之后,另一个浏览器会有记录。
– 游戏浏览器
– 支持过期时间
– 默认关闭浏览器即失效
– max-age 指定过期时间,默认单位是秒,这样关闭浏览器也不会失效。
– None 不过期
– experis 时间戳
(2)服务端会话技术——session
– 数据存在服务器
– Session依赖于Cookie
– Session存储
– Session存储在内存中
– Django里将Session持久化到数据库中了
– django_session表中存在三个字段
– session_key 主键
– session_data 数据,使用BASE64编码做了一个简单的数据安全
– session_experis 过期时间,django中默认两周
– Session 退出
– 删 cookie
– 删 session
– 两个一起彻底删掉
#### Cookie 和 Session区别
– 数据存储位置不一样
– Session相对来说更安全
– Cookie 传输明文,相对来说不安全
– Cookie默认不支持中文
– 编码解码
– Session 依赖于Cookie
(3)服务端会话技术——Token (自定义的session)
– 服务端会话技术
– 自定义的Session
– 主要用在移动端
– 如果Token用在Web上,建议还是使用Session
– 如果用在专属客户端上,我们建议手动管理Token
– Token用法
– 直接在用户表中添加一字段,字段用来存储用户的Token值
– 将Token存储在缓存中
#### 用户系统
– 用户中心
– 用户注册
– 用户登录
– 用户退出
#### MD5(哈希算法的一类)
– 是一种信息摘要算法,常用在信息安全领域,它是把信息处理成长度固定的数据。
– 特性
– 单向不可逆
– 输出长度固定,是128位的二进制
– 为了人们可以看懂,转化成了Unicode码, Unicode码存储的时候是十六进制,所以是32位Unicode码,也就是32位的字符串
– 抗爆破能力强
– 原数据只要发生任何变更,md5都会发生很大的变化
#### 扩展:
– 使用Cookie存储中文