2017-01-31 10 views
1

私はフラスコセキュリティを使いたいです。 私は拡張用のグローバルオブジェクトを作成するテンプレートフラスコアプリケーションを使用していて、アプリケーションの作成時にそれらを初期化します。例: extensions.pyこのようなコードがある:フラスコセキュリティ:青写真/拡張アプリケーションパターンでの使用方法?

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

は、次いでapp.pyにそうようなinit_app(app)方法を使用register_extensions(app)への呼び出し:

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

実際フラスコセキュリティはinit_app()方法を有しています。しかし、ドキュメンテーションによると、SecurityオブジェクトにはUserとRoleモデルが必要なDataStoreオブジェクトが必要です。これまでにない拡張機能が必要な場合に、app.pyでUserモデルとRoleモデルをインポートするのは正しいとは感じません。

「大型フラスコアプリ」モデルを使用しているときにFlask-Securityを使用するためのベストプラクティスは何ですか?すべてのオブジェクトが1つの場所に定義されているという単純なケースです。

答えて

-1

私はフラスコにも新しいです。私はフラスコのセキュリティは、SQLAlchemyのようなORMを使用しているので、 'models.py'という名前の別のファイルを作成し、USERとROLEを含むdbスキーマをそこに置くと仮定します。

Flask - セキュリティでは、登録ユーザーは後でログインするためにアクセスする必要があります。これは、ほとんどの場合、データを格納する必要のない他の拡張機能と比較します。

これが役に立ちます。

3

以下は私が持っているものです。

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) 
関連する問題