microdot.session — potpisane sesije putem kolačića#
Spremište ključ/vrijednost po korisniku poduprto jwt-om u jednom session kolačiću. JWT je potpisan tajnom poznatom samo aplikaciji, pa klijent može pročitati kolačić, ali ne može mijenjati sadržaj a da poslužitelj to ne otkrije.
class Session#
- class microdot.session.Session(app: Microdot | None = None, secret_key: bytes | str | None = None, cookie_options: dict | None = None)#
- app
Instanca
microdot.Microdotna koju se instalira. Opcionalno; pozoviteinitialize()kasnije ako nije zadano.- secret_key
Simetrični ključ koji se koristi za potpisivanje JWT-a sesije. Potreban prije čitanja ili zapisivanja bilo koje sesije – pristup
get()bez njega podižeValueError. Pohranite ga izvan kontrole izvornog koda; na kameri je to obično datoteka na FAT datotečnom sustavu.- cookie_options
Rječnik opcija proslijeđenih
microdot.Response.set_cookie()kad god se zapisuje kolačić sesije. Zadano postavljapath='/'ihttp_only=True. Dodajtesecure=Trueza implementacije isključivo putem HTTPS-a.
- initialize(app: Microdot, secret_key=None, cookie_options=None)#
Pridružuje se app ako je izgradnja bila odgođena. secret_key / cookie_options nadjačavaju vrijednosti konstruktora ako su zadane.
- get(request) SessionDict#
Vraća rječnik sesije za request. Rječnik se lijeno dekodira iz
sessionkolačića pri prvom pristupu i kešira narequest.g._sessionza ostatak zahtjeva. Izmijenjeni / nepotpisivi kolačići vraćaju prazan rječnik.
- encode(payload: dict, secret_key=None) str#
Kodira payload kao JWT s tajnom sesije. Koristi se interno; izloženo za pozivatelje koji žele kovati kompatibilne tokene.
- decode(session: str, secret_key=None) dict#
Provjerava i dekodira vrijednost sesije kao JWT niz. Vraća
{}pri bilo kakvom neuspjehu provjere.
- secret_key: bytes | str | None#
Tajna za potpisivanje koja se koristi za potpisivanje i provjeru JWT-a sesije. Može se postaviti nakon izgradnje.
Nonedok se ne postavi; čitanje sesije bez nje podižeValueError.
- cookie_options: dict#
Rječnik opcija primijenjenih na kolačić sesije pri zapisivanju, proslijeđen
microdot.Response.set_cookie(). Zadano postavljapath='/'ihttp_only=Truenakon što se izvršiinitialize().
class SessionDict#
- class microdot.session.SessionDict(request, session_dict)#
Objekt nalik rječniku koji vraća
Session.get(). Podklasa jedict, pa rade sve standardne izmjene; dvije dodatne metode upisuju promjene natrag u odgovor.- save()#
Zapisuje (eventualno izmijenjenu) sesiju natrag u odgovor kao novi
sessionkolačić. Bez ovog poziva, izmjene na mjestu gube se kada zahtjev završi.
- delete()#
Uklanja sesiju emitiranjem zaglavlja za brisanje kolačića u odgovoru.
Dekoratori na razini modula#
- microdot.session.with_session(f)#
Dekorator koji prosljeđuje rječnik sesije rukovatelju rute kao drugi argument:
from microdot import Microdot from microdot.session import Session, with_session app = Microdot() Session(app, secret_key=load_secret()) @app.get('/counter') @with_session async def counter(request, session): session['n'] = session.get('n', 0) + 1 session.save() return {'n': session['n']}
Dekorator ne sprema automatski – pozovite
SessionDict.save()kada je sesija izmijenjena.
Sam sadržaj sesije je običan Python rječnik serijaliziran kao JSON unutar JWT-a. Držite ga malim: svaki zahtjev i svaki odgovor nosi cijeli kolačić, a JWT-ovi nisu osmišljeni za pohranu velikih objekata. Za stanje po korisniku veće od nekoliko stotina bajtova, pohranite podatke na poslužitelju ključene malim identifikatorom sesije.