session设置

- session本质就是cookie

- Flask中session必须加盐才能设置:

  - 盐:app.secret_key;通过给该变量进行赋值即可加盐;

- session用法:

  - 雷同与Django;

  - session需要导入;

  - 设置session:

    session[key] = value

  - 删除某个session:

    session.pop(key)

session源码流程

- 请求进来后执行__call__方法:

Flask中的cookie和session的处理

 

- 执行 self.wsgi_app(), 在里面对基本的请求信息进行了基本的封装:

Flask中的cookie和session的处理

  

- 基本请求信息的封装:实例化了RequestContext对象,并且利用组合将Request对象也进行了封装;

Flask中的cookie和session的处理

 

 - 顺序执行 ctx.push() 方法

   - 在push方法中,分别将 request,session等都放入了上下文管理器中:

   def push(self):
        top = _request_ctx_stack.top
        if top is not None and top.preserved:
            top.pop(top._preserved_exc)

        # Before we push the request context we have to ensure that there
        # is an application context.
        app_ctx = _app_ctx_stack.top
        if app_ctx is None or app_ctx.app != self.app:
            app_ctx = self.app.app_context()
            app_ctx.push()
            self._implicit_app_ctx_stack.append(app_ctx)
        else:
            self._implicit_app_ctx_stack.append(None)

        if hasattr(sys, 'exc_clear'):
            sys.exc_clear()

        _request_ctx_stack.push(self)

     # 执行session
        if self.session is None:
       # app.session_interface = SecoureCookieSessionInterface() session_interface = self.app.session_interface

       # session_interface.open_session = SecourseCookieSessionInterface.open_session
       # 真正的session封装 self.session = session_interface.open_session( self.app, self.request ) if self.session is None: self.session = session_interface.make_null_session(self.app)

 

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
猜你喜欢
  • 2021-06-02
  • 2022-12-23
  • 2021-12-19
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
  • 2022-12-23
相关资源
相似解决方案