Не удается получить переменные сеанса из другого Flask Blueprint - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь использовать Flask Чертежи, но кажется, что я не могу получить доступ к объекту сеанса в разных Чертежах.

В Чертеже Аутентификации у меня есть следующая функция:

@authentication_bp.route("/login", methods=["POST"])
def login():
    # Get information about user and try to find him
    username = request.get_json().get("username")
    password = request.get_json().get("password")
    user = User.find_by_username(username)

    # Validate user
    if not user or not user.verify_password(password):
        error_log.error("Login failed!")

        return jsonify(success=False, message="Incorrect username or password!"), 403 # forbidden

    # Update session
    session["LOGGED_IN"] = True
    session["USERNAME"] = username
    info_log.info("%s logged in successfully." % username)

    return jsonify(success=True)

Так что, если пользователь успешно вошел в систему, сессия должна быть обновлена.

В main.py у меня есть функция checkLogin:

@app.route("/checkLogin")
def check_login():
    print(session.get("LOGGED_IN"))
    # Check if there is a user logged in
    if session.get("LOGGED_IN"):
        return jsonify(logged_in=True)

    return jsonify(logged_in=False)

Я запускаю check_login () сразу после входа в систему (). Функция login () возвращает «success», но после этого print(session.get("LOGGED_IN")) печатает None, а не True.

Ожидается ли такое поведение Blueprints и как я могу добиться того, чего хочу?

ПРИМЕЧАНИЕ: Я выписал Flask План Помещение что-то в сеанс , но это не ответило на вопрос для меня.

ПРИМЕЧАНИЕ: Я импортировал сеанс в оба файла и установил секретный ключ для приложения Flask.

1 Ответ

0 голосов
/ 08 апреля 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...