04 Python Flask 教學10 所有文章

[Flask教學] Flask Session 使用方法和介紹

Flask教學_session_Max行銷誌

Session 是什麼? Flask Session又該如何使用? 本篇介紹了 Flask Session 和如何使用它來新增、讀取、更新以及刪除,如果你在學習 Flask,希望本篇教學對你有幫助

ㄧ. Session 是什麼?

簡單來說,Session 就像是飲料店的號碼牌,使用者拿號碼牌去和 Server 要資料,Server 會跟據這號碼牌,認定你是顧客、是否點過餐、知道你點了什麼東西,然後可以給你屬於你的飲料。

二. 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 存放於用戶瀏覽器的 Cookie 中,而擴充套件 Flask-Session 可以支援將 Session Imformation 存放於各種資料庫 (redis, mongodb…) 來提升安全性。

方法一:使用 Flask 內建的 Session

  1. 讀取 session.get(‘username’)
  2. 新增/更新 session[‘username’] = ‘name’
  3. 刪除 session[‘username’] = False
  4. 完整代碼如下
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 擴充套件

pip install flask-session

簡單的使用 Redis 當作 Session 的資料庫存放,關於更多參數設定:Flask-Session document

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 Session使用方法和介紹結束囉,感謝收看,有關Max行銷誌的最新文章,都會發佈在Max的Facebook粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

如有任何關於 Flask Session 的問題,歡迎留言~看到後我會盡快回覆

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *