会话不可用,因为没有设置密钥.将应用程序上的secret_key设置为唯一且保密的内容.瓶/ Heroku的

Fly*_*ira 7 python login heroku secret-key flask

烧瓶应用程序可以登录并注册localhost上的所有罚款.但是当我把它推到heroku时,这就成了一个问题.它显示了上面提到的错误.这是app.py代码

from flask import Flask, render_template, request, redirect, jsonify, url_for, flash
from sqlalchemy import create_engine, asc, desc
from sqlalchemy.orm import sessionmaker
from database_setup import Base, User, BlogPost
from flask import session as login_session
import random
import string
from wtforms import Form, BooleanField, TextField, PasswordField, validators
from passlib.hash import sha256_crypt


app = Flask(__name__)


#Connecting to database
engine = create_engine('sqlite:///travellerdata.db')
Base.metadata.bind = engine

DBSession = sessionmaker(bind=engine)
session = DBSession()
Run Code Online (Sandbox Code Playgroud)

结束于......

if __name__ == "__main__":
    app.secret_key = 'some secret key'
    app.debug = True
    app.run()
Run Code Online (Sandbox Code Playgroud)

jos*_*nes 8

当您的HTTP服务器加载您的应用程序时,__name__可能不等于'main'.尝试移动app.secret_key = 'some secret key'if块之外的行.

将您的密钥放在源代码中并不是一个好主意,因为如果有人得到它,他们可以恶意获取对您系统的访问权限.尝试将其存储在应用程序实例目录(此处为代码段)中的文件中,或将其放在环境变量中(此处说明).


小智 5

我在使用flask-login生成会话ID时遇到相同的问题,当我直接运行它时它可以正常工作,但在使用HTTP服务器时会输出错误。原始代码如下:

if __name__ == "__main__":
    app.secret_key = os.urandom(24)
    app.run()
Run Code Online (Sandbox Code Playgroud)

然后,我感动app.secret_key = os.urandom(24)了的__name__,并把它放在app = Flask(__name__)这样的:

app = Flask(__name__)
app.secret_key = os.urandom(24)

login_manager = flask_login.LoginManager()
login_manager.init_app(app)
Run Code Online (Sandbox Code Playgroud)

现在它可以正常工作。