Session 是什麼? Flask Session又該如何使用? 本篇介紹了 Flask Session 和如何使用它來新增、讀取、更新以及刪除,如果你在學習 Flask,希望本篇教學對你有幫助
Table
ㄧ. Session 是什麼?
二. Session 與 Cookie 的結合
因為 Http 無狀態的特性 -> 出現了 Session 來補足無狀態性,而為了讓Session ( 具有狀態的一段時間 ) 更容易實現 -> 出現了 Cookie 將 Session Imformation 保存在 Cookie 內。
有人會問到 Cookie 是否有可能被篡改?
這類安全問題,通常會使用加密手段來解決。一般來說,Session 的 Cookie 會被加密,所以只有 Server 才知道如何解開。
Server Side Session:
如果是在 Cookie 僅存一個 Session_id,而當使用者發送請求時,Server 會根據這個 Session_id 再去資料庫撈取使用者相關資料,來判斷之前儲存的狀態資訊 ,這種專業術語叫做 Server Side Session。
Client Side Session:
而將 Session 資料加密後,儲存於 Cookie,並沒有再由資料庫再去做撈取的方式,這種專業術語叫做 Client Side Session。Flask 內建的 Session 就是採用的就是這種方式,但是也可以使用擴充套件 Flask-Session 來取代儲存於瀏覽器。
參考來源:
三. Flask Session如何使用?
可以選擇使用 Flask 內建的 Session 或擴充套件 Flask-Session。
兩者的差別在於擴充套件 Flask-Session 可以支援將 Session Imformation 存放於各種資料庫 (redis, mongodb…) 來提升安全性。
方法一:使用 Flask 內建的 Session
- 讀取 session.get(‘username’)
- 新增/更新 session[‘username’] = ‘name’
- 刪除 session[‘username’] = False
- 完整代碼如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
from flask import Flask,session from datetime import timedelta import os app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24) app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=31) # 设置session @app.route('/') def index(): #設置session session['username'] = 'name' #如果設置了 session.permanent 為 True,那麽過期時間是31天 session.permanent = True #讀取session session.get('username') #刪除session session['username'] = False |
方法二:使用 Flask 擴充套件 Flask-Session
首先安裝 Flask-Session 擴充套件
1 |
pip install flask-session |
簡單的使用 Redis 當作 Session 的資料庫存放,關於更多參數設定:Flask-Session document
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
from flask import Flask, session from flask.ext.session import Session app = Flask(__name__) SESSION_TYPE = 'redis' app.config.from_object(__name__) Session(app) @app.route('/set/') def set(): session['key'] = 'value' return 'ok' @app.route('/get/') def get(): return session.get('key', 'not set') |
最後~
▍回顧本篇的 Flask Session 教學內容:
- Session 是什麼?
- Session 與 Cookie 的結合
- Flask Session如何使用?
- 方法一:使用 Flask 內建的 Session
- 方法二:使用 Flask 擴充套件 Flask-Session
關於 Flask 教學的延伸閱讀:
▍關於 Flask 教學系列目錄:
▍其他 Flask 相關教學:
- 【Flask教學系列】Flask 為甚麼需要 WSGI 與 Nginx
- 【Flask教學系列】Flask-SQLAlchemy 資料庫連線&設定入門 (一)
- 【Flask教學系列】Flask-JWT-Extended 實作
- 【Flask教學系列】實作 Flask CORS
- 【Flask教學系列】實作 Flask CSRF Protection
- 【Flask教學系列】實作 Dockerfile + nginx + ssl + Flask 教學 (附GitHub完整程式)
[Flask教學] Flask Session使用方法和介紹結束囉,感謝收看,有關Max行銷誌的最新文章,都會發佈在Max的Facebook粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!
如有任何關於 Flask Session 的問題,歡迎留言~看到後我會盡快回覆