flask之cookie與session區別

2022-03-21 10:58:30 字數 3017 閱讀 7662

使用者身份校驗是web訪問時的重要步驟。常用的身份校驗方式有cookie,session和jwt三種。其中cookie和session是較傳統的校驗方式,其採用將使用者資訊儲存在伺服器或瀏覽器中,使用者訪問時,攜帶相關資訊,有伺服器進行校驗。最近流行的jwt令牌是一種分布式的跨域驗證機製造。其允許跨域,另外將token儲存到瀏覽器,避免了採用資料庫儲存使用者資訊。在分布式伺服器執行場合,其校驗更加簡單,高效。其由頭部,載荷和簽名三部分組成。頭部一般是token的型別、加密方式的宣告資訊;載荷部分是token的使用者身份資訊,頭部和載荷均採用base64演算法進行加密。通過base64解密即可查閱使用者資訊,因此一般存放的是使用者非機密資訊。簽名部分是通過將頭部,載荷部分以及使用者的加密字段進行加密生成的字串,這部分資訊用來驗證令牌的有效性。

1.flask中session的儲存有兩種:自帶的session類和flask_session包。自帶的session類中,其session資訊是儲存在瀏覽器內,而非客戶端。而採用flask_session包可以改變session的儲存位置,可以儲存到redis,sqlalchemy,mongodb,快取等資料庫中。利用session記錄使用者登入次數:

)hellobaby"#

用於加密session資訊

#使用者登陸後設定session資訊

/user")

defindex():

session[

"name

"]="

hello,user

"session[

"count

"]=1

return

"hello,"#

記錄使用者登陸的次數,

/hello")

defuser():

name=session.get("

name")

count=session.get("

count")

print(count,9999)

ifnot

all([name,count]):

return

"請登陸

"num=count+1session[

"count

"]=num

return

str(num)

if__name__ == '

__main__':

結果:查詢session資訊,因是加密,資訊較安全。

cookie:session=eyjjb3vudci6mswibmftzsi6imhlbgxvlhvzzxiifq.ebtdcw.skwftljbdc-iiglwqcgrs16bzhg

2.利用cookie記錄使用者登入次數

#使用者登陸後設定cookie資訊

/user")

defindex():

resp=response("

hello")

resp.set_cookie(

"name

","user1

",3600)

resp.set_cookie(

"count

", "

1", 3600)#

cookie的值1為str

return

resp

#記錄使用者登陸的次數,

/hello")

defuser():

name=request.cookies.get("

name")

count=request.cookies.get("

count")

print(count,9999)

ifnot

all([name,count]):

return

"請登陸

"num=str(int(count)+1)

resp=response(num)

resp.set_cookie(

"count

", num, 3600)

return

resp

if__name__ == '

__main__':

3.基於flask_session包進行session資訊的儲存,其可以選擇將session資訊儲存在redis,快取或sqlalchemy,關係型資料庫等。)#

class

secret_key="

20e4f6b0-b631-4582-b2e0-00190c7d006f

"session_type="

redis

"session_permanent=false

session_use_signer=true

permanent_session_lefttime=86400*2session_redis=strictredis(host="

127.0.0.1

",port=6379)#

建立redis連線

#使用者登陸後設定cookie資訊

/user")

defindex():

session[

"name

"]="

user1

"session[

"count

"]=1

return

"login sccess"#

記錄使用者登陸的次數,

/hello")

defuser():

name=session.get("

name")

count=session.get("

count")

print(count,9999)

ifnot

all([name,count]):

return

"請登陸

"num=str(int(count)+1)

resp=response(num)

session[

"count

"] =num

return

resp

if__name__ == '

__main__':

正確理解web互動中的cookie與session

cookie儲存在客戶端的純文字檔案 使用者請求伺服器指令碼 指令碼設定cookie內容 並 通過http response傳送cookie內容到客戶端並儲存在客戶端本地 客戶端再次傳送http請求的時候會將本地的cookie內容新增到http請求頭髮送給伺服器,伺服器端指令碼可以呼叫cookie內...

flask中cookie和session設定

在 中,http請求是無狀態的。也就是說即使第一次和伺服器連線後並且登入成功後,第二次請求伺服器依然不能知道當前請求是哪個使用者。cookie 的出現就是為了解決這個問題,第一次登入後伺服器返回一些資料 cookie 給瀏覽器,然後瀏覽器儲存在本地,當該使用者傳送第二次請求的時候,就會自動的把上次請...

flask中cookie和session介紹

在 中,http請求是無狀態的。也就是說即使第一次和伺服器連線後並且登入成功後,第二次請求伺服器依然不能知道當前請求是哪個使用者。cookie的出現就是為了解決這個問題,第一次登入後伺服器返回一些資料 cookie 給瀏覽器,然後瀏覽器儲存在本地,當該使用者傳送第二次請求的時候,就會自動的把上次請求...