2015-11-06 14 views
0

Приложение для фляжек, которое я создаю, разделено на две части. Каждый раздел должен иметь свою собственную систему аутентификации, которая полностью независима от другой (собственная страница входа, каждая аутентификация имеет свою ограниченную зону доступа, ...)Правильный способ обработки двух разных типов пользовательских сеансов в одном приложении в колбе

Но, как я боялся и заявлял в this Post, модуль Flask-Login может зарегистрируйтесь в приложении, а не в плане, так что у вас есть только один тип сеанса для всего приложения.

Итак, каков правильный способ инициализации второго типа сеанса входа, который полностью отличается от другого.

ответ

2

Я не думаю, что вам нужно сделать это так, как вы описали.

Вы можете создать два различных 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/

+0

Спасибо, я попробую это. – muthan

 Смежные вопросы

  • Нет связанных вопросов^_^