Outils pour utilisateurs

Outils du site


python:flask:session

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
python:flask:session [2020/12/07 05:30]
marclebrun
python:flask:session [2023/05/12 13:50] (Version actuelle)
marclebrun
Ligne 1: Ligne 1:
 ====== Session ====== ====== Session ======
  
-**Prérequis** ​avoir défini une clé dans la valeur **SECRET_KEY**.+Doc: 
 +  ​[[https://​flask.palletsprojects.com/​en/​2.2.x/​quickstart/#​sessions]]
  
-<code python> +Didacticiels:​ 
-app.config["​SECRET_KEY"​= "... clé secrète ​...+  * [[https://​www.code-learner.com/​how-to-use-session-and-cookie-in-python-flask-framework/​]] 
-</​code>​+  * [[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** : Importer l'​objet **session** :
Ligne 13: Ligne 24:
 </​code>​ </​code>​
  
-Stocker une valeur dans la 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.
  
 <code python> <code python>
Ligne 19: Ligne 35:
 </​code>​ </​code>​
  
-Lire une valeur dans la session ​:+===== Lire une valeur dans la session ​=====
  
 <code python> <code python>
 name = session.get("​USERNAME"​) name = session.get("​USERNAME"​)
 +
 +# OU
 +
 +name = session["​USERNAME"​]
 </​code>​ </​code>​
  
Ligne 34: Ligne 54:
 </​code>​ </​code>​
  
-Supprimer ​une valeur ​de la session ​:+Tester l'​existence d'une valeur ​avec l'​opérateur **in** ​:
  
 <code python> <code python>
-session.pop("USERNAME", None)+if "​username"​ in session: 
 +    return ​session["username"]
 </​code>​ </​code>​
  
-Le contenu de la session ​peut également être lu depuis un template ​:+Depuis un template, accéder au contenu de la session ​comme ceci :
  
 <code twig> <code twig>
 {{ session.USERNAME }} {{ session.USERNAME }}
 {{ session["​USERNAME"​] }} {{ session["​USERNAME"​] }}
 +</​code>​
 +
 +===== Supprimer une valeur de la session =====
 +
 +<code python>
 +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>​
  
python/flask/session.1607319012.txt.gz · Dernière modification: 2020/12/07 05:30 par marclebrun