<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      關于 flask_session 在登錄時設置后,再其他接口獲取時為None的問題

      flask本身的session對于生產來講可能并不能滿足我們,我們需要使用三方插件來滿足我們的生產環境。

      一般情況下,session對應的存儲值我們需要持久化到數據庫中,所以我們的session將會啟用flask三方插件:flask_session

      配置flask_session 由于每個項目的不同我的配置未必符合你的項目,你可以直接查看flask_session的官方文檔: Usage - Flask-Session 0.8.0 documentation

      在settings里面的配置

      SESSION_TYPE = "redis"
      SESSION_REDIS = Redis(
          host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD, db=REDIS_RESULTS_DB
      )  # type: ignore
      PERMANENT_SESSION_LIFETIME = dt.timedelta(minutes=5)
      SESSION_COOKIE_DOMAIN = "*"

      然后創建工廠函數等,以下是項目配置,我們可能并不相同

      from flask_session import Session
      
      session = Session()
      from xxx.extensions import session
      session.init_app(self.flask_app)

      創建好后,我們在項目上使用一下

      class Captcha(MethodView):
      
          def get(self):
              session["b64_str"] = “text”
              return json_response(data=b64_str)
      
      class Captcha111(MethodView):
      
          def get(self):
              text = session.get("b64_str")
              print(text)
              return json_response(data=text)

      當我們在調用captcha111的時候,你會發現session所get出來的數據是None。

      這不符合我們對session的期望,這時我們需要知道為什么會發生這種事。

      解決問題的思路。

      首先你需要知道,會不會是我們的redis數據庫的問題,我們先驗證數據是否是沒問題的。

      我們把settings里面的數據庫連接中,密碼修改為錯誤密碼,當我們調用captch路由時,會拋出redis連接異常的錯誤,說明我們的redis連接是沒問題的,一般情況下,里面所存儲的數據就也是沒問題的,我們應該這種自信,斷定redis是沒問題的。

      既然redis是沒問題的,那就看在第二個路由里面獲取時,走沒走redis數據庫,初步考慮應該是沒有的,不然不會取不出來,我們可以采取剛才的方式,將數據庫的密碼修改為錯誤,然后在調用獲取的方法,發現并未出現數據庫連接報錯,可見,當前的session在獲取數據時,并未連接數據庫,這就可以側面印證,在某一時刻,我們的session和上次的session并非是同一個session,哪怕這個session的id是相同的id。

      這時,我們就需要知道flask_session的運行原理,否則我們無法得知它在哪個環節被限制住了:flask學習筆記--flask內置session處理機制_flask session httponly-CSDN博客

      當我們得知它會在

       這里進行相應的攔截時,我們可以考慮是不是因為我們使用postman二次訪問未攜帶相應的cookie導致的。

      理論成立,實踐動手:

      我們使用瀏覽器訪問后,取得cookie:

       然后取出cookie后,我們是用postman發起訪問:

       果然,data的數據出現,說明我們的想法是沒問題的。

      那么問題回到剛才,我們此時的session.get會訪問redis數據庫嗎?

      答案是:會的。隨后我便驗證了,當密碼不正確時,代碼執行到此處時會拋出數據庫未連接的異常信息。

      最后,當你想讓它出現在cookie,以便前端直接訪問時:

       

      你可以這樣寫:

      class Captcha(MethodView):
          __doc__ = """獲取圖片驗證碼"""
      
          def get(self):
              from flask import Response
              b64_str, text = generate_captcha()
              session["b64_str"] = text
              response = json_response(code=CODE.OK.code, data=b64_str)
              response.set_cookie("session", session.sid)
              return response

       

      posted @ 2024-05-07 15:20  小天狼鑫  閱讀(173)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品色无码AV试看| 拉孜县| 亚洲最大激情中文字幕| 久人人爽人人爽人人片av| 思思热在线视频精品| 日本高清免费不卡视频| 亚洲中文字幕有综合久久| 香蕉久久久久久久AV网站| 日韩精品成人一区二区三区| 五月综合激情婷婷六月| 强伦人妻一区二区三区| 女人与牲口性恔配视频免费| 威海市| 国产一区二区三区小说| 狠狠色丁香婷婷综合尤物| 免费午夜无码片在线观看影院| 国产美女高潮流白浆视频| 日本道不卡一二三区视频 | 漾濞| aaa少妇高潮大片免费看| 中文字幕热久久久久久久| 成年无码av片在线蜜芽| 一区二区不卡99精品日韩| 亚洲午夜亚洲精品国产成人| 国产精品一区二区久久精品| 中文字幕日韩一区二区不卡| 色悠悠国产在线视频一线| 国产欲女高潮正在播放| 动漫精品专区一区二区三区| 日韩精品一区二区三区久| 午夜精品福利一区二区三| 国产精品亚洲а∨天堂2021 | 免费无码AV一区二区波多野结衣| 久久天堂综合亚洲伊人HD妓女 | 免费av深夜在线观看| 亚洲av伊人久久综合性色| 一区二区三区精品视频免费播放 | 九九热精品免费视频| 国产亚洲中文字幕久久网| 鄂尔多斯市| 国产精品99久久不卡|