flask_session是一个flask的第三方组件,核心思想:就是自定义了flask内置session中的app.session_interface,实现session保存在数据库中,主要实现的方法就是以下几个类中的open_session
和save_session
方法:
RedisSessionInterface
MemcachedSessionInterface
FileSystemSessionInterface
MongoDBSessionInterface
SqlAlchemySessionInterface
# 方式一
from flask_session import RedisSessionInterface
from redis import Redis
redis = Redis(host="127.0.0.1")
"""
key_prefix 前缀
use_signer 是否使用签名
permanent 为False,cookie为关闭浏览器失效
"""
app.session_interface = RedisSessionInterface(redis=redis, key_prefix="__")
方式二
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_session import Session
db = SQLAlchemy()
from . import models
from .views.login import login
def create_app(settings_cls):
app = Flask(__name__, template_folder='templates', static_folder='statics', static_url_path='/static')
@app.errorhandler(404)
def error_404(arg):
return "404错误了"
app.config.from_object(settings_cls) # 加载配文件
Session(app) # session写到redis
db.init_app(app) # 初始化数据库
app.register_blueprint(login)
return app
settings.py
SESSION_TYPE = 'redis' # session类型为redis
SESSION_KEY_PREFIX = 'session:' # 保存到session中的值的前缀
# SESSION_PERMANENT = True # 如果设置为False,则关闭浏览器session就失效。
# SESSION_USE_SIGNER = False # 是否对发送到浏览器上 session:cookie值进行加密
SESSION_REDIS = Redis(host="127.0.0.1", port='6739')