zoukankan      html  css  js  c++  java
  • flask 中 session的源码解析

    1、首先请求上下文和应用上下文中已经知道session是一个LocalProxy()对象

     

    2、然后需要了解整个请求流程,

     

    3、客户端的请求进来时,会调用app.wsgi_app(),于此此时,会生成一个ctx,

     

    其本质是一个RequestContext对象

    4、那我们点进RequestContext中,可以清晰的看到

    在RequestContext 对象中定义了session,且初值为None。这就是session最初的值

     

     

     

     

    5、再返回 wsgi_app函数中,ctx.push()函数

     

    6.可以看出session 是通过open_session的执行。进入源码去分析

     

     7、可以看出不管有没有cookie 当前方法的返回值都是通过session_class 得到的。那么代码往上看

     

     

     

     

     8、那么我们一起来看一下 SecureCookieSession这个类

    9、 SecureCookieSession 是基于 werkzeug/datastructures:CallbackDict 实现的,这个类可以指定一个函数作为 on_update 参数,每次有字典操作的时候(__setitem____delitem__clearpopitemupdatepopsetdefault)会调用这个函数

    到现在为止整个流程走完了,session的本质就是一个特殊的字典,所有的操作都是和字典一致的。

    02:26:492018-10-24

     

     

     

  • 相关阅读:
    Springboot html映射
    table 合并单元格
    Idea中Spring Boot 启动出错
    Modal模态框scrolltop保留上次位移的解决方案
    8、如何实现浏览器的前进、后退操作?
    html中table并排展示
    两个有序的链表的合并
    7、链表(下):如何轻松写出正确的链表代码?
    2018.10.12
    c语言关键字:const
  • 原文地址:https://www.cnblogs.com/avon/p/9841029.html
Copyright © 2011-2022 走看看