该会话不可用,因为未设置任何Flask App工厂密钥

时间:2019-10-04 20:09:28

标签: python session flask secret-key

当我尝试使用App Factory设置应用程序时,我无法登录用户。该应用程序从配置文件进行配置,当我在create_app()之前使用打印语句时,它实际上向我显示了密钥。但是,当我运行该应用程序并在登录屏幕中输入用户名时,出现运行时错误:

  

RuntimeError:该会话不可用,因为未设置任何秘密密钥。将应用程序上的secret_key设置为独特而秘密的内容。

有人能指出我正确的方向吗?我似乎无法解决这个问题。

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 :(得分:0)

将设置从.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等人下进行部署时造成混乱。