flask框架中的cookie和session
文章介紹了flask框架中的cookie和session。Session是在伺服器端儲存的一個資料結構,用來跟蹤使用者的狀態,這個資料可以儲存在叢集、資料庫、檔案中。Cookie是客戶端儲存使用者資訊的一種機制,用來記錄使用者的一些資訊,也是實現Session的一種方式。
WEB -> cookie & session
由於HTTP協議是無狀態的協議,所以服務端需要記錄使用者的狀態時,就需要用某種機制來識具體的使用者,這個機制就是Session.典型的場景比如購物車,當你點選下單按鈕時,由於HTTP協議無狀態,所以並不知道是哪個使用者操作的,所以服務端要為特定的使用者建立了特定的Session,用用於標識這個使用者,並且跟蹤使用者,這樣才知道購物車裡面有幾本書。這個Session是儲存在服務端的,有一個唯一標識。
服務端如何識別特定的客戶?這個時候Cookie就登場了。每次HTTP請求的時候,客戶端都會傳送相應的Cookie資訊到服務端。實際上大多數的應用都是用 Cookie 來實現Session跟蹤的,第一次建立Session的時候,服務端會在HTTP協議中告訴客戶端,需要在 Cookie 裡面記錄一個Session ID,以後每次請求把這個會話ID傳送到伺服器,我就知道你是誰了。
Cookie其實還可以用在一些方便使用者的場景下,設想你某次登陸過一個網站,下次登入的時候不想再次輸入賬號了,怎麼辦?這個資訊可以寫到Cookie裡面,訪問網站的時候,網站頁面的指令碼可以讀取這個資訊,就自動幫你把使用者名稱給填了,能夠方便一下使用者。這也是Cookie名稱的由來,給使用者的一點甜頭。
flask中的session和cookie
flask中的session機制是將敏感資料加密後放入session,然後將session存入cookie,下次請求時,直接從瀏覽器發過來的cookie中獲取session,再從中獲取資料進行解密
這樣操作更節省服務開銷,因為資料均儲存到客戶端
大家可能會擔心這種做法的安全性,因為資料全部儲存在本地瀏覽器,很容易被盜取,但是安全性總是相對的,而且flask裡面對session也有自己的特殊加密演算法,所以也不用太過於在意安全方面的問題
Session操作
1.使用sessiom需要先匯入session
from flask import session
2.SECRET_KEY
一定記得要設定SECRET_KEY,用於加密資料,並且如果每次啟動伺服器你的秘鑰都在變化的話就不能再用之前的SECRET_KEY進行解密了,我們此處就可以將它設定成固定值,對於配置檔案裡面變數的設定,前文講過,如果資料量比較多就單獨在config.py裡面整合,但是如果只是很微量的幾條設定,那麼就可以在主檔案裡簡單進行指令設定即可,類似這裡的:
#生成隨機的24位字串 app.config['SECRET_KEY'] = os.urandom(24)
3.session值新增
因為session和cookie都是鍵值對形式的字典,所以直接用字典方法新增就可以了
session['username'] = 'user1'
4.session值刪除
#1.單條刪除 session.pop('username') del session['username'] #2. 全部清除 session.clear()
5.session值獲取
session.get('username') session['username']
6.設定過期時間(如果不設定,預設瀏覽器退出即自動結束)
#在config.py中配置session引數PERMANENT_SESSION_LIFETIME,這個值的資料型別是datetime.timedelay型別 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) session.permanent = True #預設為31天
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3486/viewspace-2833677/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Django框架之Cookie和SessionDjango框架CookieSession
- Tomcat 中的 Session 和 CookieTomcatSessionCookie
- cookie 和 sessionCookieSession
- session和cookieSessionCookie
- Cookie和SessionCookieSession
- 第74節:Java中的Cookie和SessionJavaCookieSession
- 【Javaweb】Cookie和SessionJavaWebCookieSession
- http中session和cookie的區別和關係HTTPSessionCookie
- cookie和session的區別CookieSession
- 對session和cookie的理解SessionCookie
- 深入理解flask框架(4):sessionFlask框架Session
- session和cookie關係SessionCookie
- Session和Cookie機制SessionCookie
- 撩下Cookie和SessionCookieSession
- laravel操作session和cookieLaravelSessionCookie
- 關於Session和CookieSessionCookie
- keyclaok~keycloak存到cookie中的值和session_stateCookieSession
- localStorage 與 sessionStorage / cookie 和 sessionSessionCookie
- 聊一聊session和cookieSessionCookie
- nodeJS之Cookie和Session(一)NodeJSCookieSession
- 深入分析Session和CookieSessionCookie
- Flask - Cookie的使用FlaskCookie
- cookie sessionCookieSession
- cookie & sessionCookieSession
- Cookie 和 Session 關係和區別CookieSession
- cookie和session的區別(全面總結)CookieSession
- cookie和session的詳解與區別CookieSession
- 關於Cookie、session和Web StorageCookieSessionWeb
- session物件、cookie物件和appliaction物件Session物件CookieAPP
- Flask框架從入門到精通之Session(九)Flask框架Session
- cookie與session的使用CookieSession
- Redis分散式Session和普通的cookie session有什麼區別?Redis分散式SessionCookie
- cookie&sessionCookieSession
- Session與CookieSessionCookie
- 你真的瞭解 Cookie 和 Session 嗎CookieSession
- 你真的瞭解 Cookie 和 Session 嗎?CookieSession
- 前端基礎:Session 和 Cookie 差別前端SessionCookie
- 你真的瞭解 Session 和 Cookie 嗎?SessionCookie