Flask中的cookie和session的处理

 

session设置

- session本质就是cookie

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

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

- session用法:

  - 雷同与Django;

  - session需要导入;

  - 设置session:

    session[key] = value

  - 删除某个session:

    session.pop(key)

session源码流程

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

 

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

  

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

 

 - 顺序执行 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)

 

 

posted @ 2018-10-20 16:27  浮生凉年  阅读(271)  评论(0编辑  收藏  举报