Flask-проверка входа в систему, если пользователь аутентифицируется без декоратора
Из документов Flask-Login описано, как пользователь системы может потребовать аутентифицированную пользовательскую модель для доступа к методу, использующему синтаксис декоратора:
from flask_login import login_required
@app.route("/settings")
@login_required
def settings():
pass
Теперь это все хорошо и хорошо, но я хочу иметь возможность проверить, зарегистрирован ли пользователь в методе, что-то вроде этого:
@app.route('/main/', methods=['GET', 'POST'])
main_route():
if request.method == 'GET':
if user_is_authenticated(): #Do the authentication here
#load authenticated /main/ html template etc.
pass
else:
#load unauthenticated /main/ html template etc.
pass
...
Причина этого заключается в том, что он факторизирует запросы GET и POST, а не дублирует маршруты для аутентифицированных пользователей и неаутентифицированных пользователей.
Как я могу это сделать? Возможно ли это?
2 ответа:
Это очень просто в колбе:
from flask_login import current_user @app.route(...) def main_route(): if current_user.is_authenticated: return render_template("main_for_user.html") else: return render_template("main_for_anonymous.html")
Смотритедокументацию по анонимным пользователям .
Вы можете сослаться на пример здесь.
Когда пользователь вошел в систему, установите
session['logged_in']=True
. В то же время, вы можете использовать Flask-login API для выполнения некоторых конфигураций в случае, если вы хотите использовать его функциональность.
Если вы хотите проверить, вошел ли пользователь вручную, а не с помощью API Flask-login, то проверьте значениеsession['logged_in']
.