【问题标题】:flask-security: how to use in blueprint/extension app pattern?flask-security:如何在蓝图/扩展应用程序模式中使用?
【发布时间】:2017-06-17 10:54:07
【问题描述】:

我想使用烧瓶安全。 我正在使用模板烧瓶应用程序,它为扩展创建全局对象,然后在创建应用程序时初始化它们。 例如在 extensions.py 中有这样的代码:

from flask_bcrypt import Bcrypt
from flask_caching import Cache ...
from flask_security import Security ...
bcrypt = Bcrypt() ...
security = Security()

然后在app.py 中调用register_extensions(app),它使用init_app(app) 方法,如下所示:

bcrypt.init_app(app)
security.init_app(app)

确实,flask-security 有一个init_app() 方法。但是文档说 Security 对象需要一个 DataStore 对象,该对象需要 User 和 Role 模型。当到目前为止没有其他扩展需要时,在 app.py 中导入用户和角色模型感觉不对。

在使用“大型 Flask 应用程序”模型时,使用 Flask-Security 的最佳做法是什么……我认为文档没有帮助。当所有对象都定义在一个地方时,这是一种简单的情况。

【问题讨论】:

    标签: flask flask-security


    【解决方案1】:

    以下是我所拥有的。

    extensions.py

    from flask_sqlalchemy import SQLAlchemy
    from flask_security import Security
    
    
    db = SQLAlchemy()
    security = Security()
    

    __init__.py

    from .extensions import db, security
    from .models import User, Role
    
    def create_app(config_name):
        user_datastore = SQLAlchemyUserDatastore(db, User, Role)
        security.init_app(app, user_datastore)
    

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 2015-09-06
      相关资源
      最近更新 更多