文章轉(zhuǎn)自其他博主的分享,源鏈:https://www.cnblogs.com/cwp-bg/p/9339865.html
flask_session是flask框架實(shí)現(xiàn)session功能的一個(gè)插件报咳,用來(lái)替代flask自帶的session實(shí)現(xiàn)機(jī)制挖藏。
配置參數(shù)詳解
- SESSION_COOKIE_NAME
設(shè)置返回給客戶(hù)端的cookie的名稱(chēng)膜眠,默認(rèn)是“session”;放置在response的頭部岩臣;
- SESSION_COOKIE_DOMAIN
設(shè)置會(huì)話的域,默認(rèn)是當(dāng)前的服務(wù)器宵膨,因?yàn)镾ession是一個(gè)全局的變量架谎,可能應(yīng)用在多個(gè)app中;
- SESSION_COOKIE_PATH
設(shè)置會(huì)話的路徑柄驻,即哪些路由下應(yīng)該設(shè)置cookie狐树,如果不設(shè)置,那么默認(rèn)為‘/’鸿脓,所有的路由都會(huì)設(shè)置cookie抑钟;
- SESSION_COOKIE_HTTPONLY
cookie應(yīng)該和httponly標(biāo)志一起設(shè)置涯曲,默認(rèn)為T(mén)rue,這個(gè)一般采用默認(rèn)在塔。
- SESSION_COOKIE_SECURE
cookie是否和安全標(biāo)志一起設(shè)置幻件,默認(rèn)為false,這個(gè)一般采用默認(rèn)蛔溃。
- PERMANENT_SESSION_LIFETIME
設(shè)置session的有效期绰沥,即cookie的失效時(shí)間,單位是s贺待。這個(gè)參數(shù)很重要徽曲,因?yàn)槟J(rèn)會(huì)話是永久性的。
- SESSION_TYPE
設(shè)置session保存的位置麸塞,可以有多種配置秃臣,
SESSION_TYPE = 'null' : 采用flask默認(rèn)的保存在cookie中;`
SESSION_TYPE = 'redis' : 保存在redis中
SESSION_TYPE = 'memcached' : 保存在memcache
SESSION_TYPE = 'filesystem' : 保存在文件
SESSION_TYPE = 'mongodb' : 保存在MongoDB
SESSION_TYPE = 'sqlalchemy' : 保存在關(guān)系型數(shù)據(jù)庫(kù)
- SESSION_PERMANENT
是否使用永久會(huì)話哪工,默認(rèn)True奥此,但是如果設(shè)置了PERMANENT_SESSION_LIFETIME,則這個(gè)失效雁比;
- SESSION_USE_SIGNER
是否為cookie設(shè)置簽名來(lái)保護(hù)數(shù)據(jù)不被更改稚虎,默認(rèn)是False;如果設(shè)置True,那么必須設(shè)置flask的secret_key參數(shù)偎捎;
- SESSION_KEY_PREFIX
在所有的會(huì)話鍵之前添加前綴蠢终,對(duì)于不同的應(yīng)用程序可以使用不同的前綴;默認(rèn)“session:”鸭限,即保存在redis中的鍵的名稱(chēng)前都是以“session:”開(kāi)頭蜕径;
for example:
SESSION_KEY_PREFIX = 'session:'
- SESSION_REDIS
如果SESSION_TYPE = ‘redis’,那么設(shè)置該參數(shù)連接哪個(gè)redis败京,其是一個(gè)連接對(duì)象;如果不設(shè)置的話梦染,默認(rèn)連接127.0.0.1:6379/0
for example:
SESSION_REDIS = redis.StrictRedis(host="127.0.0.1", port=6390, db=4)
一份常用的flask_session的配置
# 指明對(duì)session數(shù)據(jù)進(jìn)行保護(hù)
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)建一個(gè)session對(duì)象
from flask_session import Session
# 創(chuàng)建一個(gè)Session的實(shí)例
session = Session()
# 在app初始化時(shí)初始化session對(duì)象,即加載配置
# __init__.py
from flask import Flask
app = Flask(__name__)
session.init_app(app=app)
#但是在使用的時(shí)候用的是flask的應(yīng)用上下文對(duì)象session
# task.py
from Flask import session
@app.route('/test', methods=['POST'])
def test():
session.get('user',None)
return ""
更詳細(xì)的介紹請(qǐng)參考:
https://flask-session.readthedocs.io/en/latest/
`