====== Session ====== Doc: * [[https://flask.palletsprojects.com/en/2.2.x/quickstart/#sessions]] Didacticiels: * [[https://www.code-learner.com/how-to-use-session-and-cookie-in-python-flask-framework/]] * [[https://testdriven.io/blog/flask-sessions/]] * [[https://pythonbasics.org/flask-sessions/]] * [[https://overiq.com/flask-101/sessions-in-flask/]] :-) ===== Prérequis ===== Avoir défini une clé dans la valeur **SECRET_KEY** (voir la page [[python:flask:configuration]]) La valeur de la **SECRET_KEY** se retrouve dans le tableau **app.config** ou directement dans **app.secret_key**. Importer l'objet **session** : from flask import session ===== Stocker une valeur dans la session ===== Dès qu'on écrit quelque chose dans la session, un cookie est enregistré dans le navigateur. Le nom du cookie est "**session**". Ce cookie est illisible si on ne possède pas la **SECRET_KEY** de l'application. session["USERNAME"] = "Marc" ===== Lire une valeur dans la session ===== name = session.get("USERNAME") # OU name = session["USERNAME"] Si la valeur n'existe pas dans la session, ça renvoie **None** : if session.get("USERNAME") is not None: success() else: error() Tester l'existence d'une valeur avec l'opérateur **in** : if "username" in session: return session["username"] Depuis un template, accéder au contenu de la session comme ceci : {{ session.USERNAME }} {{ session["USERNAME"] }} ===== Supprimer une valeur de la session ===== session.pop("USERNAME", None) ===== Durée de validité de la session ===== Par défaut le cookie de session expire à la fermeture du navigateur. Pour que la session reste ouverte pendant 31 jours (la valeur par défaut) : * La valeur de **app.config["PERMANENT_SESSION_LIFETIME"]** est déjà initialisée à **31 jours** par défaut * Mettre **session.permanent = True** lors d'une connexion réussie @app.route("/login") def login(): ... if password_is_ok(...): ... session['username'] = username session.permanent = True