Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:flask:session [2021/10/01 05:52] marclebrun [Stocker une valeur dans la session] |
python:flask:session [2023/05/12 13:50] (Version actuelle) marclebrun |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Session ====== | ====== Session ====== | ||
- | Doc: [[https://flask.palletsprojects.com/en/2.0.x/quickstart/#sessions]] | + | 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 ===== | ===== Prérequis ===== | ||
Ligne 32: | Ligne 39: | ||
<code python> | <code python> | ||
name = session.get("USERNAME") | name = session.get("USERNAME") | ||
+ | |||
+ | # OU | ||
+ | |||
+ | name = session["USERNAME"] | ||
</code> | </code> | ||
Ligne 41: | Ligne 52: | ||
else: | else: | ||
error() | error() | ||
+ | </code> | ||
+ | |||
+ | Tester l'existence d'une valeur avec l'opérateur **in** : | ||
+ | |||
+ | <code python> | ||
+ | if "username" in session: | ||
+ | return session["username"] | ||
</code> | </code> | ||
Ligne 54: | Ligne 72: | ||
<code python> | <code python> | ||
session.pop("USERNAME", None) | session.pop("USERNAME", None) | ||
+ | </code> | ||
+ | |||
+ | ===== 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 | ||
+ | |||
+ | <code python> | ||
+ | @app.route("/login") | ||
+ | def login(): | ||
+ | | ||
+ | ... | ||
+ | | ||
+ | if password_is_ok(...): | ||
+ | ... | ||
+ | session['username'] = username | ||
+ | session.permanent = True | ||
</code> | </code> | ||