Django中的几种会话技术小结(cookie、session、token)

## 一次请求的周期

    - 客户端向服务器发送数据  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存储中文

你可能感兴趣的:(Django中的几种会话技术小结(cookie、session、token))