Ga naar hoofdinhoud

Zo werkt het: een sessie

De diagrammen van één klik en één formulier gaan uit van een verzoek dat op zichzelf staat. Een sessie is het rondje dat dat gat dicht.

Herkend worden met een sessie
  1. Browser: De browser stuurt de cookie mee. Bij elk verzoek aan jouw server gaat sessie_id automatisch mee, ongevraagd. · Onthouden met een cookie

  2. Server: FastAPI geeft de cookie door. De parameter met Cookie(default="") vangt hem op, net als Form bij een formulier. · Onthouden met een cookie

  3. Server: De server zoekt de sessie op. Het sessie-id is een sleutel in sessies.db; daar staan de echte gegevens. · Onthouden op de server: sessies

  4. Server: Nu pas weet je wie er is. De naam komt uit jouw database, niet uit de cookie — dus die klopt. · Onthouden op de server: sessies

  5. Server: Het antwoord gaat terug. Na het inloggen zet set_cookie het sessie-id erop: bij elke inlog een nieuw id. · Onthouden op de server: sessies

  6. Browser: De browser bewaart de cookie. En stuurt hem bij het volgende verzoek weer mee — het rondje begint opnieuw.

Stap 3 is het hele verschil met een gewone cookie. De server leest niet wat de browser stuurde, maar zoekt het op in zijn eigen database, en alleen het id reist mee in de cookie. Hier hoort bij elke stap de regel uit je main.py uit Onthouden op de server: sessies:

  • De browser doet stap 1 en 6 zelf; daar schrijf je niets voor.
  • Stap 2 is de parameter sessie_id: str = Cookie(default="") van je endpoint.
  • Bij stap 3 en 4 hoort sessies.get(sessie_id, {}). Een onbekend id geeft een lege dictionary, en dan is er geen sessie.
  • In je POST /inloggen is antwoord.set_cookie(key="sessie_id", value=sessie_id, …) stap 5. In de antwoorden daarna zit geen nieuwe cookie: je server zet hem één keer, en de browser stuurt hem steeds terug.