flask基础之session原理详解(十) (3)

经过上面的三步,我们就可以将自己实现的session对象运用到flask项目中,我们采用的是文件存储session,实际项目中有redis,memcached,mysql等都可以存储session,将它们整合起来,于是flask_session插件就应运而生了。

flask_session扩展

flask_session插件就是官方推荐的session实现插件,整合了redis,memcached,mysql,file,mongodb等多种第三方存储session信息,它的实现原理就是我上面自定义session所做的工作。

安装 pip install Flask-Session 配置参数详解

flask_session初始化后,会从app的配置中读取参数,比较重要的有:

设置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_KEY_PREFIX = 'session:' :session存储时的键的前缀 SESSION_USE_SIGNER:是否为cookie设置签名来保护数据不被更改,默认是False;如果设置True,那么必须设置flask的secret_key参数; SESSION_PERMANENT:是否使用永久会话,默认True,但是如果设置了PERMANENT_SESSION_LIFETIME,则这个失效; 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) # task.py from Flask import session @app.route('/test', methods=['POST']) def test(): session.get('user',None) return "" 参考:

https://pythonhosted.org/Flask-Session/

https://dormousehole.readthedocs.io/en/latest

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfzpw.html