flask_session是flask框架實現session功能的一個插件,用來替代flask自帶的session實現機制。
配置參數詳解
- SESSION_COOKIE_NAME
設置返回給客戶端的cookie的名稱,默認是“session”;放置在response的頭部;
- SESSION_COOKIE_DOMAIN
設置會話的域,默認是當前的服務器,因為Session是一個全局的變量,可能應用在多個app中;
- SESSION_COOKIE_PATH
設置會話的路徑,即哪些路由下應該設置cookie,如果不設置,那么默認為‘/’,所有的路由都會設置cookie;
- SESSION_COOKIE_HTTPONLY
cookie應該和httponly標志一起設置,默認為True,這個一般采用默認。
- SESSION_COOKIE_SECURE
cookie是否和安全標志一起設置,默認為false,這個一般采用默認。
- PERMANENT_SESSION_LIFETIME
設置session的有效期,即cookie的失效時間,單位是s。這個參數很重要,因為默認會話是永久性的。
- SESSION_TYPE
設置session保存的位置,可以有多種配置,
SESSION_TYPE = ‘null’ : 采用flask默認的保存在cookie中;
SESSION_TYPE = ‘redis’ : 保存在redis中
SESSION_TYPE = ‘memcached’ : 保存在memcache
SESSION_TYPE = 'filesystem' : 保存在文件
SESSION_TYPE = 'mongodb' : 保存在MongoDB
SESSION_TYPE = 'sqlalchemy' : 保存在關系型數據庫
- SESSION_PERMANENT
是否使用永久會話,默認True,但是如果設置了PERMANENT_SESSION_LIFETIME,則這個失效;
- SESSION_USE_SIGNER
是否為cookie設置簽名來保護數據不被更改,默認是False;如果設置True,那么必須設置flask的secret_key參數;
- SESSION_KEY_PREFIX
在所有的會話鍵之前添加前綴,對於不同的應用程序可以使用不同的前綴;默認“session:”,即保存在redis中的鍵的名稱前都是以“session:”開頭;
for example:
SESSION_KEY_PREFIX = 'session:'
- SESSION_REDIS
如果SESSION_TYPE = ‘redis’,那么設置該參數連接哪個redis,其是一個連接對象;如果不設置的話,默認連接127.0.0.1:6379/0
for example:
SESSION_REDIS = redis.StrictRedis(host="127.0.0.1", port=6390, db=4)
關於其他的保存中間人參考:https://pythonhosted.org/Flask-Session/
一份常用的flask_session的配置
# 指明對session數據進行保護
SECRET_KEY = '123'
SESSION_USE_SIGNER = True
# 指明保存到redis中
SESSION_TYPE = "redis"
SESSION_REDIS = redis.StrictRedis(host="127.0.0.1", port=6390, db=4)
# session的有效期,單位:秒
PERMANENT_SESSION_LIFETIME = 7200
flask_session的基本使用
# extensions.py
# 創建一個session對象
from flask_session import Session
# 創建一個Session的實例
session = Session()
# 在app初始化時初始化session對象,即加載配置
# __init__.py
from flask import Flask
app = Flask(__name__)
session.init_app(app=app)
#但是在使用的時候用的是flask的應用上下文對象session
# task.py
from Flask import session
@app.route('/test', methods=['POST'])
def test():
session.get('user',None)
return ""