Première session persistante¶
Prérequis : installer l'opt-in
Installez forge-mvc-sessions-db avant de commencer : voir sa référence.
Objectif : premier contact avec le module opt-in forge-mvc-sessions-db.
Ce que vous allez apprendre : DbSessionStore est un store de session qui range ses données en base, dans la table forge_sessions.
On le branche sur l'application avec forge.configure, puis on crée une session avec create() et on la relit avec get().
La table de stockage doit d'abord exister.
Premier palier du niveau débutant de la progression Sessions BDD.
Module opt-in
Si forge-mvc-sessions-db n'est pas installé, l'import échoue.
Le cœur de Forge, lui, ne dépend jamais de ce paquet : il fournit MemorySessionStore et FileSessionStore.
Ce que ce starter montre¶
- créer la table
forge_sessionsà partir du script SQL fourni ; - brancher
DbSessionStoresur l'application avecforge.configure; - créer une session avec
create()et la relire avecget().
Fonctions Forge utilisées¶
| Fonction | Rôle dans ce starter | Référence |
|---|---|---|
DbSessionStore(ttl=...) |
Construit le store de session adossé à la base. | Opt-ins |
forge.configure(session_store=...) |
Déclare le store à utiliser dans l'application. | Opt-ins |
create(data=None) |
Crée une session et renvoie son identifiant. | Opt-ins |
get(sid) |
Relit les données d'une session. | Opt-ins |
1. Créer la table¶
La table n'est pas créée automatiquement.
forge sessions:init copie la migration embarquée du paquet dans mvc/migrations/.
Appliquez-la sur votre base, une seule fois.
Comprendre ce code¶
sessions:initdépose la migration qui définit la tableforge_sessions,migration:applyl'exécute.- Une écriture en base reste explicite : rien n'est créé en silence.
- Sans cette table,
create()etget()échouent faute de support de stockage.
2. Brancher le store sur l'application¶
import core.forge as forge
from forge_mvc_sessions_db import DbSessionStore
forge.configure(session_store=DbSessionStore(ttl=3600))
Comprendre ce code¶
DbSessionStore(ttl=3600)construit un store dont les sessions expirent au bout d'une heure.forge.configure(session_store=...)dit à l'application d'utiliser ce store plutôt que celui du cœur.- Par défaut, le store parle à la base via
core.database.db: aucune configuration de connexion supplémentaire.
3. Créer et relire une session¶
from forge_mvc_sessions_db import DbSessionStore
store = DbSessionStore(ttl=3600)
sid = store.create({"panier": []})
print(sid) # identifiant hexadécimal de 64 caractères
session = store.get(sid)
print(session["panier"]) # []
Comprendre ce code¶
create({"panier": []})insère une nouvelle ligne dansforge_sessionset renvoie son identifiant.- Forge complète la session avec ses champs standard :
authenticated,user,csrf_token,expires_at. get(sid)recharge la session depuis la base et renvoie le dictionnaire des données, ouNonesi elle est absente ou expirée.
À retenir¶
- Une session persistante se crée avec
create()et se relit avecget(). - Le store se branche sur l'application avec
forge.configure(session_store=...). - La table
forge_sessionsdoit exister au préalable (forge sessions:initpuisforge migration:apply).
Après ce starter¶
Vous avez créé et relu une première session en base.
Voyons ce qui distingue vraiment ce store du store mémoire : la survie au redémarrage.