Saltar al contenido

la sesión no está disponible porque no se estableció una clave secreta. Establezca la clave_secreta de la aplicación en algo único y secreto. Matraz / Heroku

Solución:

Tengo el mismo problema cuando utilizo flask-login para generar una ID de sesión, funciona bien cuando lo ejecuto directamente, pero generará un error cuando uso el servidor HTTP. El código original es como:

if __name__ == "__main__":
    app.secret_key = os.urandom(24)
    app.run()

Entonces me mudé app.secret_key = os.urandom(24) fuera de __name__ y ponerlo debajo app = Flask(__name__) como esto:

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

login_manager = flask_login.LoginManager()
login_manager.init_app(app)

Y funciona bien ahora.

Es probable que cuando su servidor HTTP esté cargando su aplicación, __name__ no es igual a 'main'. Intenta mover la línea app.secret_key = 'some secret key' fuera del bloque if.

No es una buena idea poner su clave secreta en el código fuente porque si alguien la obtiene, puede obtener acceso a su sistema de manera maligna. Intente almacenarlo en un archivo en el directorio de instancias de la aplicación (fragmento aquí) o colóquelo en una variable de entorno (explicación aquí).

La excepción la genera la implementación de la sesión NullSessionInterface, que es el tipo de sesión predeterminado cuando usa Flask-Session. Eso es porque nunca le das la configuración SESSION_TYPE a Flask; no es suficiente establecerlo como global en su módulo.

Este valor predeterminado no tiene mucho sentido con Flask 0.10; puede haber tenido sentido con Flask 0.8 o 0.9, pero la versión actual se usa como una señal de error. En su caso, ahora le da el mensaje de error incorrecto.

Establezca la opción de configuración SESSION_TYPE en otra cosa. Elija uno de redis, memcached, filesystem o mongodb.

Configurarlo en el sistema de archivos es más fácil; hay suficiente configuración predeterminada para que funcione sin dependencias adicionales:

if __name__ == "__main__":
    app.secret_key = 'super secret key'
    app.config['SESSION_TYPE'] = 'filesystem'

    sess.init_app(app)

app.debug = True
app.run()
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *