cookie
- HTTP请求是无状态的,用户会话跟踪技术有cookie和session
- session是基于cookie实现的
- cookie随着服务器的响应写入客户端浏览器,下次
再向服务器发送请求是会自动把cookie添加到HTTP请求中 - cookie是保存在客户端浏览器中的一段字符串信息
session
- 保存在服务器中,会占用服务器资源
- session是一小块内存空间
- session创建时会使用UUID算法拿到一个字符串session_id
- session_id会作为会话cookie写入浏览器,再次请求时会根据浏览器发来的session_id找到对应的session
- sesseion使用两级超时模式,可以设置过期时间
- 敏感数据存储在服务器,更加安全
Flask session
- Flask的session机制是将用户数据加密之后放到cookie中的,
而不是保存在服务器上 - 服务器重启后Secret_key会变化,所以之前写入浏览器的session会解析不到正确结果
- session加密需要设置SECRET_KEY,app.config[‘SECRET_KEY’]=os.urandom(24)
- 添加数据到session,session[‘username’]=’mark’
- 读取session数据,session.get(‘username’)
- 删除session,session.pop(‘username’)或者session.clear()
- 如果没有指定session过期时间,默认浏览器关闭时过期
- session.permanent=True 过期时间是一个月(31天)
- app.config[‘PERMANENT_SESSION_LIFETIME’] =timedelta(days=7) 设置session有效期限为7天