会话技术 cookie session Token

出现场景

服务器如何识别客户端
Http在Web开发中基本都是短连接

请求生命周期

从Request开始 到Response结束

cookie:客户端会话技术。
特性:

  • 数据存储在客户端。
  • 以键值对方式存储。
  • 支持过期时间。
  • 默认Cookie会自动携带,本网站所有Cookie
  • Cookie不能跨域名,跨网站。
  • 本身由浏览器生成,通过HTTPResponse将cookie写给客户端。
  • Cookie默认不支持中文。可通过base64进行加装,来支持中文
  • 设置可以加盐(salt)。即进行加密处理。同样,获取的时候需要解密。
#加盐
response.set_signed_cookie(key, value, salt)
#解密
request.get_signed_cookie(key, salt)

session

  • 服务端会话技术。
  • 数据存储在服务器中。默认存储在内存。Django默认存储在DB中,默认过期时间是14天。
  • 主键是字符串。
  • 数据使用了数据安全。运用了base64编码,在前部添加了混淆串。
  • session依赖于cookie。
# django中常用的操作方法
get(key, default=None)  # 根据key获取会话的值。
clear()  # 清楚所有会话。
flush()  # 删除当前的会话数据并删除会话的Cookie。
delete request['sessionid']  # 删除会话
session.session_key  # 获取session的key
# 设置数据,数据存储到db中,使用base64编码
request.session['user'] = username

Token

  • 服务端会话技术
  • 相当于自定义session
  • 如果用在web页面开发中,使用和session基本一致。如果是前后端分离,则多使用JWT。
  • 如果使用在移动端或客户端中,通常以json形式传输,需要移动端自己存储token,需要获取Token关联数据的时候,主动传递Token。
  • cookie使用更简洁,服务器压力更小,数据不是很安全。
  • session服务器要维护Session,相对安全。
  • Token拥有Session的所有优点,支持更多终端。维护相对麻烦。
posted @ 2021-03-02 23:22  dsprain  阅读(74)  评论(0)    收藏  举报