Я не думаю, что вам нужно сделать это так, как вы описали.
Вы можете создать два различных User
модели, а затем вы можете изменить, какую модель получает проверку подлинности различных маршрутов:
@auth_blueprint.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is not None and user.verify_password(form.password.data):
login_user(user, True)
next = request.args.get('next')
#if not next_is_valid('next'):
# return abort(400)
return redirect(next or url_for('simple.index'))
flash('Invalid username or password')
return render_template('/auth/login.html', form=form)
Когда вы звоните login_user()
вы можете передать в зависимости от того, пользователь модели вам нужно. Это добавит этот объект базы данных в Flask-Login's current_user
, который можно использовать в шаблонах и в функциях просмотра. Используя этот метод, вы можете сохранить отдельные пользовательские таблицы и только войти в систему, которые находятся в той конкретной таблице, используемой в маршруте.
На самом деле вы, вероятно, хотите использовать только одну модель User
, но назначаете разные роли для разных пользователей и разрешаете пользователям с определенными ролями обращаться к определенным частям сайта.
Заканчивать это действительно простой декоратор, который вы можете использовать, чтобы ограничить определенные взгляды на определенные роли:
http://flask.pocoo.org/snippets/98/
Спасибо, я попробую это. – muthan