如何在会话烧瓶安全性中保留用户信息

时间:2019-03-26 00:35:52

标签: python flask flask-security flask-session

我正在使用Flask安全性来管理访问的Flask应用程序。我从sqlalchemy回声中注意到,对于@roles_accepted装饰的每个端点,它都会向数据库发送一个新查询(重复请求太多)。这种行为对于烧瓶安全性是预期的吗?有什么方法可以将用户信息保留在会话中以减少查询请求的数量?

@roles_accepted('admin')
def index():
    ...
    return render_template('main.html')

我在这里找到sqlalchemy会话的示例。我是Flask的新手,所以我不太了解这与浏览器中的用户会话相同吗?如果是这样,如何将其集成到我的应用程序中?我对示例中的database.py的工作方式感到困惑。任何帮助表示赞赏!

我的db是使用create_app()启动的,在这种情况下我需要创建一个新的会话吗?还是在示例中如何使用db中的create_app实例?

db = SQLAlchemy()

def create_app()
    ...
    db.init_app(app)

https://pythonhosted.org/Flask-Security/quickstart.html

database.py

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:////tmp/test.db', \
                       convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()

def init_db():
    # import all modules here that might define models so that
    # they will be registered properly on the metadata.  Otherwise
    # you will have to import them first before calling init_db()
    import models
    Base.metadata.create_all(bind=engine)

0 个答案:

没有答案