microdot.session — allekirjoitetut evästeistunnot¶
Käyttäjäkohtainen avain/arvo-varasto, joka perustuu jwt-tokeniin yhdessä session-evästeessä. JWT allekirjoitetaan vain sovelluksen tuntemalla salaisuudella, joten asiakas voi lukea evästeen mutta ei voi peukaloida hyötykuormaa ilman, että palvelin havaitsee sen.
class Session¶
- class microdot.session.Session(app: Microdot | None = None, secret_key: bytes | str | None = None, cookie_options: dict | None = None)¶
- app
microdot.Microdot-instanssi, johon asennetaan. Valinnainen; kutsuinitialize()myöhemmin, jos sitä ei anneta.- secret_key
Symmetrinen avain, jota käytetään istunnon JWT:n allekirjoittamiseen. Vaaditaan ennen kuin mitään istuntoa luetaan tai kirjoitetaan –
get()-metodin käyttäminen ilman sitä nostaaValueError-poikkeuksen. Säilytä se versionhallinnan ulkopuolella; kamerassa tämä on tyypillisesti tiedosto FAT-tiedostojärjestelmässä.- cookie_options
Dict asetuksista, jotka välitetään metodille
microdot.Response.set_cookie()aina kun istuntoeväste kirjoitetaan. Oletukset asettavatpath='/'jahttp_only=True. Lisääsecure=Truevain HTTPS:ää käyttäviin käyttöönottoihin.
- initialize(app: Microdot, secret_key=None, cookie_options=None)¶
Liittää app-sovellukseen, jos muodostus lykättiin. secret_key / cookie_options ohittavat konstruktorin arvot, jos annetaan.
- get(request) SessionDict¶
Palauttaa istuntosanakirjan pyynnölle request. Sanakirja dekoodataan laiskasti
session-evästeestä ensimmäisellä käytöllä ja välimuistitetaan kohteeseenrequest.g._sessionpyynnön loppuajaksi. Peukaloidut / allekirjoittamattomat evästeet palauttavat tyhjän dict-objektin.
- encode(payload: dict, secret_key=None) str¶
Koodaa payload-hyötykuorman JWT:ksi istunnon salaisuudella. Käytetään sisäisesti; paljastettu kutsujille, jotka haluavat luoda yhteensopivia tokeneja.
- decode(session: str, secret_key=None) dict¶
Vahvistaa ja dekoodaa JWT-merkkijonomuotoisen istuntoarvon. Palauttaa
{}minkä tahansa vahvistusvirheen tapauksessa.
- secret_key: bytes | str | None¶
Allekirjoitussalaisuus, jota käytetään istunnon JWT:n allekirjoittamiseen ja vahvistamiseen. Asetettavissa muodostuksen jälkeen.
None, kunnes asetetaan; istunnon lukeminen ilman sitä nostaaValueError-poikkeuksen.
- cookie_options: dict¶
Dict asetuksista, jotka kohdistetaan istuntoevästeeseen sitä kirjoitettaessa, välitetään metodille
microdot.Response.set_cookie(). Oletukset asettavatpath='/'jahttp_only=Trueinitialize()-metodin suorituksen jälkeen.
class SessionDict¶
- class microdot.session.SessionDict(request, session_dict)¶
Session.get()-metodin palauttama dict-tyyppinen objekti. Aliluokkaadict, joten kaikki tavanomaiset muutokset toimivat; kaksi lisämetodia tallentaa muutokset takaisin vastaukseen.- save()¶
Kirjoittaa (mahdollisesti muokatun) istunnon takaisin vastaukseen uutena
session-evästeenä. Ilman tätä kutsua paikan päällä tehdyt muokkaukset menetetään, kun pyyntö päättyy.
- delete()¶
Poistaa istunnon lähettämällä evästeenpoisto-otsikon vastauksessa.
Moduulitason koristelijat¶
- microdot.session.with_session(f)¶
Koristelija, joka välittää istuntosanakirjan reittikäsittelijälle toisena argumenttina:
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']}
Koristelija ei tallenna automaattisesti – kutsu
SessionDict.save(), kun istuntoa on muokattu.
Istunnon hyötykuorma itsessään on tavallinen Python-dict, joka serialisoidaan JSON-muodossa JWT:n sisällä. Pidä se pienenä: jokainen pyyntö ja jokainen vastaus kuljettaa koko evästeen, eikä JWT:itä ole suunniteltu suurten objektien tallentamiseen. Käyttäjäkohtaiselle tilalle, joka on suurempi kuin muutama sata tavua, tallenna data palvelimen puolelle pienellä istuntotunnisteella avaintettuna.