Сеанс недоступен, так как не был установлен секретный ключ. Flask App factory - PullRequest
0 голосов
/ 04 октября 2019

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

RuntimeError: сеанс недоступен, так как секретный ключ не был установлен. Установите для секретного ключа в приложении что-то уникальное и секретное.

Может ли кто-нибудь указать мне правильное направление? Кажется, я не могу понять это.

app / __ init __. Py

 from flask import Flask
    from flask_session import Session
    from flask_sqlalchemy import SQLAlchemy

    db = SQLAlchemy()


    def create_app():

        app = Flask(__name__)

        db.init_app(app)
        app.config.from_object('config.Config')

        with app.app_context():

            from .auth import auth_routes

            app.register_blueprint(auth_routes.auth_routes)

            db.create_all()

        return app

.env

SESSION_TYPE = filesystem
SECRET_KEY = verysecretkey

config.py

from os import environ


class Config:

    SESSION_TYPE = environ.get('SESSION_TYPE')
    SECRET_KEY = environ.get('SECRET_KEY')

1 Ответ

0 голосов
/ 05 октября 2019

Передача настроек из .env в экземпляр Flask имеет два требования: во-первых, необходимо установить python-dotenv. Во-вторых, вам нужно запустить ваше приложение, используя команду flask или какой-либо путь, который вызывает app.run().

Я нашел более безопасным явное указание в моих конфигах, выполнив

import os
from dotenv import load_dotenv

load_dotenv()

class Config:
    SECRET_KEY = os.environ.get('APP_SECRET_KEY')
    ...

Это позволяет избежать путаницы при развертывании под uwsgi и др.

...