## 一次请求的周期
- 客户端向服务器发送数据 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存储中文