一、首先请求上下文和应用上下文中已经知道session是一个LocalProxy()对象cookie
二、而后须要了解整个请求流程,session
三、客户端的请求进来时,会调用app.wsgi_app(),于此此时,会生成一个ctx,app
其本质是一个RequestContext对象函数
四、那咱们点进RequestContext中,能够清晰的看到spa
在RequestContext 对象中定义了session,且初值为None。这就是session最初的值code
五、再返回 wsgi_app函数中,ctx.push()函数对象
6.能够看出session 是经过open_session的执行。进入源码去分析blog
七、能够看出无论有没有cookie 当前方法的返回值都是经过session_class 获得的。那么代码往上看源码
八、那么咱们一块儿来看一下 SecureCookieSession这个类it
九、 SecureCookieSession
是基于 werkzeug/datastructures:CallbackDict
实现的,这个类能够指定一个函数做为 on_update
参数,每次有字典操做的时候(__setitem__
、__delitem__
、clear
、popitem
、update
、pop
、setdefault
)会调用这个函数
到如今为止整个流程走完了,session的本质就是一个特殊的字典,全部的操做都是和字典一致的。
02:26:492018-10-24