flask 中 session的源码解析

一、首先请求上下文和应用上下文中已经知道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__clearpopitemupdatepopsetdefault)会调用这个函数

到如今为止整个流程走完了,session的本质就是一个特殊的字典,全部的操做都是和字典一致的。

02:26:492018-10-24

相关文章
相关标签/搜索