microdot.session — imzalı çerez oturumları

Tek bir session çerezi içindeki bir jwt ile desteklenen, kullanıcı başına bir anahtar/değer deposu. JWT, yalnızca uygulamanın bildiği bir gizli anahtarla imzalanır, böylece istemci çerezi okuyabilir ancak sunucu bunu tespit etmeden yükü kurcalayamaz.

class Session

class microdot.session.Session(app: Microdot | None = None, secret_key: bytes | str | None = None, cookie_options: dict | None = None)
app

Üzerine kurulacak microdot.Microdot örneği. İsteğe bağlı; verilmezse daha sonra initialize() çağırın.

secret_key

Oturum JWT’sini imzalamak için kullanılan simetrik anahtar. Herhangi bir oturum okunmadan veya yazılmadan önce gereklidir – bir tanesi olmadan get()‘e erişmek ValueError fırlatır. Kaynak kontrolünün dışında saklayın; bir kamerada bu genellikle FAT dosya sistemindeki bir dosyadır.

cookie_options

Oturum çerezi her yazıldığında microdot.Response.set_cookie()‘ye iletilen seçeneklerin dict’i. Varsayılanlar path='/' ve http_only=True ayarlar. Yalnızca HTTPS dağıtımları için secure=True ekleyin.

initialize(app: Microdot, secret_key=None, cookie_options=None)

Oluşturma ertelendiyse app‘e ekler. Verilirse secret_key / cookie_options yapıcı değerlerini geçersiz kılar.

get(request) SessionDict

request için oturum sözlüğünü döndürür. Sözlük, ilk erişimde session çerezinden gecikmeli olarak çözülür ve isteğin geri kalanı için request.g._session üzerinde önbelleğe alınır. Kurcalanmış / imzalanamayan çerezler boş bir dict döndürür.

encode(payload: dict, secret_key=None) str

payload‘ı oturumun gizli anahtarıyla bir JWT olarak kodlar. Dahili olarak kullanılır; uyumlu jetonlar üretmek isteyen çağıranlar için açığa çıkarılmıştır.

decode(session: str, secret_key=None) dict

Bir JWT-dize oturum değerini doğrular ve çözer. Herhangi bir doğrulama başarısızlığında {} döndürür.

secret_key: bytes | str | None

Oturum JWT’sini imzalamak ve doğrulamak için kullanılan imzalama gizli anahtarı. Oluşturma sonrası ayarlanabilir. Ayarlanana kadar None; o olmadan oturumu okumak ValueError fırlatır.

cookie_options: dict

Yazıldığında oturum çerezine uygulanan ve microdot.Response.set_cookie()‘ye iletilen seçeneklerin dict’i. Varsayılanlar, initialize() çalıştıktan sonra path='/' ve http_only=True ayarlar.

class SessionDict

class microdot.session.SessionDict(request, session_dict)

Session.get() tarafından döndürülen dict benzeri nesne. dict‘i alt sınıflar, böylece tüm standart değişiklikler çalışır; iki ek metot değişiklikleri yanıta geri işler.

save()

(Muhtemelen değiştirilmiş) oturumu, yeni bir session çerezi olarak yanıta geri yazar. Bu çağrı olmadan, yerinde düzenlemeler istek sona erdiğinde kaybolur.

delete()

Yanıt üzerine bir çerez silme başlığı yayarak oturumu kaldırır.

Modül düzeyindeki dekoratörler

microdot.session.with_session(f)

Oturum sözlüğünü rota işleyicisine ikinci argüman olarak geçiren dekoratör:

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']}

Dekoratör otomatik kaydetme yapmaz – oturum değiştirildiğinde SessionDict.save() çağırın.

Oturum yükünün kendisi, JWT’nin içinde JSON olarak serileştirilmiş normal bir Python dict’tir. Küçük tutun: her istek ve her yanıt tam çerezi taşır ve JWT’ler büyük nesneleri depolamak için tasarlanmamıştır. Birkaç yüz bayttan büyük, kullanıcı başına durum için, verileri küçük bir oturum tanımlayıcısıyla anahtarlanmış olarak sunucu tarafında saklayın.