Flask中的session機制

2021-08-24 18:17:11 字數 1790 閱讀 6310

cookie:**中,http請求是無狀態的,第一次和伺服器連線後並且登陸成功後,第二次請求伺服器依然不能知道當前請求是哪個使用者。cookie的出現就是解決了改問題,第一次登陸後伺服器返回資料(cookie是儲存資料的一種格式)給瀏覽器,然後瀏覽器儲存到本地,使用者第二次請求的時候,就會攜帶cookie資料自動攜帶給伺服器,伺服器通過瀏覽器攜帶的資料就能判斷當前使用者。cookie儲存資料有限,不同瀏覽器不同的儲存大小,但一般不超過4kb,因此cookie只能儲存小量資料。

session:session與cookie類似,都是儲存使用者相關資訊,不同的是cookie儲存在本地瀏覽器,session儲存在伺服器,儲存在伺服器的資料會更安全。但是儲存在伺服器會占用伺服器的資源。

cookie和session的結合使用:

flask中的session機制是:把敏感資料加密後放入session中,然後把session存放到cookie中,下次請求的時候,從瀏覽器發來的cookie中讀取session,再從session中讀取敏感資料,並進行解密,來獲取使用者資料

flask的這種session機制,可以節省伺服器的開銷,因為把所有的資訊都儲存到了客戶端。

安全是相對的,把session放到cookie中,經過加密也是比較安全的。

cookies:在flask中操作cookie,通過response物件來操作,可以在response返回之前,通過response.set_cookie來設定。

session:flask中的session是通過from flask import session。然後新增key和value進去就可以。並且,flask中的session機制是將session資訊加密,然後儲存在cookie中。專業術語叫client side session

session的操作:

設定session的過期時間

import os

from datetime import timedelta

import config

# 新增資料到session中

# 操作session的時候,跟操作字典一樣

# secret_key

def hello_world():

session['username'] = 'hubo'

# 不指定session的過期時間,預設是瀏覽器關閉就結束

session.permanent = true # 預設時間是乙個月

return 'hello world!'

def get():

return session.get('username')

def delete():

print(session.get('username'))

session.pop('username')

print(session.get('username'))

return 'success'

def clear():

print(session.get('username'))

session.clear()

print(session.get('username'))

return 'success'

if __name__ == '__main__':

Flask 中內建的 Session

flask中的session不同於django的session,django的session存在後端資料庫中,而flask的session會將你的sessionid存放在客戶端的cookie中,使用起來非常的奇怪 from flask import session login methods get...

Flask 中內建的 Session

flask中的session非常的奇怪,他會將你的sessionid存放在客戶端的cookie中,使用起來也非常的奇怪 1.flask 中 session 是需要 secret key 的 from flask import session dragonfire 2.session 要這樣用 log...

Flask 中內建的 Session

flask中的session非常的奇怪,他會將你的sessionid存放在客戶端的cookie中,使用起來也非常的奇怪 1.flask 中 session 是需要 secret key 的 from flask import session dragonfire 自己定義的字串秘鑰 2.sessio...