session

一、cookie、session、token

cookie:存放在客户端的键值对

session:存放在客户端的键值对

token:存放在客户端,通过算法来校验

二 设置session

2.1 在使用session之前必须现在设置一下密钥

app.secret_key="asdas" #值随便

2.2 设置session

  除请求对象之外,还有一个 session 对象。它允许你在不同请求间存储特定用户的信息。它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使用会话,你需要设置一个密钥。 (app.session_interface对象)

设置:session['username'] = 'xxx'
#在django中发什么三件事,1,生成一个随机的字符串 2 往数据库存 3 写入cookie返回浏览器
#在flask中他没有数据库,但session是怎样实现的?
    # 生成一个密钥写入这个cookie,然后下次请求的时候,通过这个cookie解密,然后赋值给session
    #我们通过app.session_interface来查看
  

删除:session.pop('username', None)

2.3 app.session_interface中save_session的参数(设置cookie的参数)

key, #
value='', #
max_age=None, # 超时时间 cookie需要延续的时间(以秒为单位)如果参数是\ None`` ,# 这个cookie会延续到浏览器关闭为止
expires=None,  # 超时时间(IE requires expires, so set it if hasn't been already.)
path='/', Cookie # 生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问,浏览器只会把cookie回传给带有该路径的页面,这样可以避免将cookie传给站点中的其他的应用。
domain=None,  # Cookie生效的域名 你可用这个参数来构造一个跨站cookie。如, domain=".example.com"所构造的cookie对下面这些站点都是可读的:www.example.com 、 www2.example.com 和an.other.sub.domain.example.com 。 # 如果该参数设置为 None ,cookie只能由设置它的站点读取
secure=False,  # 浏览器将通过HTTPS来回传cookie
httponly=False  # 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

2.4 session 源码执行流程

save_seesion
    # 响应的时候,把session中的值加密序列化放大到了cookie中,返回到浏览器中
open_session
    # 请求来了,从cookie中取出值,反解,生成session对象,以后再视图函数中直接用sessoin就可以了。

 

posted on 2019-11-10 09:40  软饭攻城狮  阅读(90)  评论(0编辑  收藏  举报

导航