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; kutsu initialize() 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ä nostaa ValueError-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 asettavat path='/' ja http_only=True. Lisää secure=True vain 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 kohteeseen request.g._session pyynnö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ä nostaa ValueError-poikkeuksen.

cookie_options: dict#

Dict asetuksista, jotka kohdistetaan istuntoevästeeseen sitä kirjoitettaessa, välitetään metodille microdot.Response.set_cookie(). Oletukset asettavat path='/' ja http_only=True initialize()-metodin suorituksen jälkeen.

class SessionDict#

class microdot.session.SessionDict(request, session_dict)#

Session.get()-metodin palauttama dict-tyyppinen objekti. Aliluokkaa dict, 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.