2017-01-31 1 views
1

Я хочу использовать флакон-безопасность. Я использую приложение флеш-шаблона, которое создает глобальные объекты для расширений, а затем инициализирует их при создании приложения. , например. в extensions.py есть такой код:flask-security: как использовать в проекте/расширении приложения?

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) 

и действительно Колба-безопасности имеет init_app() метод. Но в документации говорится, что объекту Security необходим объект DataStore, для которого требуется модель User and Role. Неправильно импортировать модель User and Role в app.py, если до сих пор не требуется никакое другое расширение.

Какова наилучшая практика использования Flask-Security при использовании модели «большого флеш-приложения» ... Я не могу найти документацию полезной. Это простой случай, когда все объекты определены в одном месте.

ответ

-1

Я новичок в колбе. Я думаю, что флакс-безопасность предполагает, что вы будете использовать ORM, например SQLAlchemy, поэтому, возможно, создайте другой файл с именем «models.py» и разместите там схему db, включая USER и ROLE.

Flask -security требуется место для хранения зарегистрированных пользователей, которым они будут доступны позже для входа в систему, по сравнению с другими расширениями, которые в основном не нуждаются в хранении данных.

Надеюсь, это поможет.

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) 
Смежные вопросы