Flask會話控制

2021-09-23 05:52:01 字數 1822 閱讀 1517

所謂的會話,就是使用者和瀏覽器中**之間一次互動過程.

會話的開始是在使用者開啟瀏覽器以後第一次訪問**.

會話的結束時在使用者關閉瀏覽器以後.

因為 http 是一種無狀態協議,瀏覽器請求伺服器是無狀態的。

無狀態:指一次使用者請求時,瀏覽器、伺服器無法知道之前這個使用者做過什麼,每次請求都是一次新的請求。

無狀態原因:瀏覽器與伺服器是使用 socket 套接字進行通訊的,伺服器將請求結果返回給瀏覽器之後,會關閉當前的 socket 連線,而且伺服器也會在處理頁面完畢之後銷毀頁面物件。

有時需要保持下來使用者瀏覽的狀態,比如使用者是否登入過,瀏覽過哪些商品等

實現狀態保持主要有兩種方式:

cookie是由伺服器端生成,傳送給客戶端瀏覽器,瀏覽器會將cookie的key/value儲存,下次請求同一**時就傳送該cookie給伺服器(前提是瀏覽器設定為啟用cookie)。cookie的key/value可以由伺服器端自己定義。

使用場景: 登入狀態, 瀏覽歷史, **足跡

cookie是儲存在瀏覽器中的一段純文字資訊,建議不要儲存敏感資訊如密碼,因為電腦上的瀏覽器可能被其它人使用

cookie基於網域名稱安全,不同網域名稱的cookie是不能互相訪問的

如訪問luffy.com時向瀏覽器中寫了cookie資訊,使用同一瀏覽器訪問baidu.com時,無法訪問到luffy.com寫的cookie資訊

瀏覽器的同源策略針對cookie也有限制作用.

當瀏覽器請求某**時,會將本**下所有cookie資訊提交給伺服器,所以在request中可以讀取cookie資訊

設定cookie需要通過flask的response響應物件來進行設定,由flask內部提供了乙個make_response函式給我們可以快速建立響應物件

from flask imoprt flask,make_response

'/set_cookie'

)def

set_cookie()

: resp = make_response(

'this is to set cookie'

) resp.set_cookie(

'username'

,'xiaoming'

, max_age=

3600

)return resp

from flask import flask,request

'/get_cookie'

)def

resp_cookie()

: resp = request.cookies.get(

'username'

)return resp

對於敏感、重要的資訊,建議要儲存在伺服器端,不能儲存在瀏覽器中,如使用者名稱、餘額、等級、驗證碼等資訊

在伺服器端進行狀態保持的方案就是session

注意:session依賴於cookie,而且flask中使用session,需要配置secret_key選項,否則報錯.

'/set_session'

)def

set_session()

: session[

'username']=

'xiaoming'

return

'ok!'

'/get_session'

)def

get_session()

:return session.get(

'username'

)

Flask會話控制與模板引擎

使用 from flask import blueprint,session sess blueprint sess name url prefix session 獲取 sess.route get def get session return session.get name who are y...

PHP會話控制

簡述 http協議是無狀態的。那個瀏覽器如何區分每個使用者呢?php會話控制會給每乙個使用者一把鑰匙 加密的session id 同時這個也是使用者的乙個標識,伺服器端存放這把鑰匙的所有資訊 資料庫 檔案 記憶體資料庫 那麼這把鑰匙放到那呢?兩種方法 1是存在每個url中 2是存在會話中,也就是常說...

PHP會話控制

區別 a 存放位置不一樣 b 安全級別不同 因為cookie是存放到客戶端上,所以cookie內容可以被修改。相對cookie是不安全。不建議將一些敏感資訊存放到cookie中。c 大小不一樣 單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。理論上認為se...