我想使用flask-security。 我正在使用模板烧瓶应用程序为扩展创建全局对象,然后在创建应用程序时初始化它们。 例如在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)
:{/ p>
bcrypt.init_app(app)
security.init_app(app)
确实flask-security有一个init_app()
方法。但文档说安全对象需要一个需要用户和角色模型的DataStore对象。到目前为止,没有其他扩展需要在app.py中导入用户和角色模型感觉不正确。
使用'大型Flask应用'模型时使用Flask-Security的最佳做法是什么...我发现文档没有用。在一个地方定义所有对象的情况很简单。
答案 0 :(得分:4)
以下是我所拥有的。
extensions.py
from flask_sqlalchemy import SQLAlchemy
from flask_security import Security
db = SQLAlchemy()
security = Security()
__初始化__。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)
答案 1 :(得分:0)
我也很喜欢烧瓶。我认为flask-security假设您正在使用像SQLAlchemy这样的ORM,因此可能会创建一个名为' models.py'并将db模式放在那里,包括USER和ROLE。
与其他大多数不需要存储数据的扩展相比,Flask -security需要一个存储注册用户以后访问它们以进行登录的地方。
希望这有帮助。