Intermédiaire 3 : Une durée par nature de session¶
Objectif : qu'un panier anonyme et une session administrateur n'expirent pas au même rythme.
Une seule durée ne convient pas¶
Une session authentifiée doit expirer vite : c'est elle qui donne accès.
Un panier anonyme, lui, gagne à durer, sinon le visiteur perd son contenu en allant chercher sa carte bancaire.
Une durée unique oblige à choisir le pire des deux.
| Nature | Défaut | Ce qu'elle porte |
|---|---|---|
anonymous |
2 heures | un visiteur non connecté, un panier, un jeton CSRF |
authenticated |
1 heure | une session ouverte par une connexion |
remembered |
30 jours | un « se souvenir de moi » explicite |
La durée courte est celle de la session authentifiée
C'est l'inverse de l'intuition, et c'est délibéré : la session qui donne des droits est celle qui doit se refermer vite.
Une session anonyme volée ne donne accès à rien.
Une nature inconnue est refusée, jamais devinée
ttl_for("admin") lève plutôt que de retomber sur une valeur par défaut.
Retomber en silence donnerait à une session la durée d'une autre, et personne ne s'en apercevrait avant de chercher pourquoi des comptes restent ouverts la nuit.
L'authentification change la nature, donc la durée
Une session anonyme qui devient authentifiée reprend la durée de sa nouvelle nature.
Sans cela, une session connectée garderait les deux heures de l'anonyme, et la durée courte ne servirait à rien.
À retenir¶
- Trois natures, trois durées, réglables par l'environnement.
- La session authentifiée est la plus courte, parce qu'elle est la plus sensible.
- Une nature inconnue lève au lieu de deviner.