文章轉(zhuǎn)自其他博主的分享,源鏈:https://www.cnblogs.com/cwp-bg/p/9339865.html
flask_session是flask框架實現(xiàn)session功能的一個插件,用來替代flask自帶的session實現(xiàn)機制。
配置參數(shù)詳解
- SESSION_COOKIE_NAME
設(shè)置返回給客戶端的cookie的名稱,默認是“session”;放置在response的頭部; - SESSION_COOKIE_DOMAIN
設(shè)置會話的域,默認是當前的服務(wù)器,因為Session是一個全局的變量,可能應(yīng)用在多個app中; - SESSION_COOKIE_PATH
設(shè)置會話的路徑,即哪些路由下應(yīng)該設(shè)置cookie,如果不設(shè)置,那么默認為‘/’,所有的路由都會設(shè)置cookie; - SESSION_COOKIE_HTTPONLY
cookie應(yīng)該和httponly標志一起設(shè)置,默認為True,這個一般采用默認。 - SESSION_COOKIE_SECURE
cookie是否和安全標志一起設(shè)置,默認為false,這個一般采用默認。 - PERMANENT_SESSION_LIFETIME
設(shè)置session的有效期,即cookie的失效時間,單位是s。這個參數(shù)很重要,因為默認會話是永久性的。 - SESSION_TYPE
設(shè)置session保存的位置,可以有多種配置,
SESSION_TYPE = 'null' : 采用flask默認的保存在cookie中;`
SESSION_TYPE = 'redis' : 保存在redis中
SESSION_TYPE = 'memcached' : 保存在memcache
SESSION_TYPE = 'filesystem' : 保存在文件
SESSION_TYPE = 'mongodb' : 保存在MongoDB
SESSION_TYPE = 'sqlalchemy' : 保存在關(guān)系型數(shù)據(jù)庫
- SESSION_PERMANENT
是否使用永久會話,默認True,但是如果設(shè)置了PERMANENT_SESSION_LIFETIME,則這個失效; - SESSION_USE_SIGNER
是否為cookie設(shè)置簽名來保護數(shù)據(jù)不被更改,默認是False;如果設(shè)置True,那么必須設(shè)置flask的secret_key參數(shù); - SESSION_KEY_PREFIX
在所有的會話鍵之前添加前綴,對于不同的應(yīng)用程序可以使用不同的前綴;默認“session:”,即保存在redis中的鍵的名稱前都是以“session:”開頭;
for example:
SESSION_KEY_PREFIX = 'session:'
- SESSION_REDIS
如果SESSION_TYPE = ‘redis’,那么設(shè)置該參數(shù)連接哪個redis,其是一個連接對象;如果不設(shè)置的話,默認連接127.0.0.1:6379/0
for example:
SESSION_REDIS = redis.StrictRedis(host="127.0.0.1", port=6390, db=4)
一份常用的flask_session的配置
# 指明對session數(shù)據(jù)進行保護
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
# 創(chuàng)建一個session對象
from flask_session import Session
# 創(chuàng)建一個Session的實例
session = Session()
# 在app初始化時初始化session對象,即加載配置
# __init__.py
from flask import Flask
app = Flask(__name__)
session.init_app(app=app)
#但是在使用的時候用的是flask的應(yīng)用上下文對象session
# task.py
from Flask import session
@app.route('/test', methods=['POST'])
def test():
session.get('user',None)
return ""
更詳細的介紹請參考:
https://flask-session.readthedocs.io/en/latest/
`