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 sonrainitialize()ç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şmekValueErrorfı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ılanlarpath='/'vehttp_only=Trueayarlar. Yalnızca HTTPS dağıtımları içinsecure=Trueekleyin.
- 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çinrequest.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 okumakValueErrorfı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 sonrapath='/'vehttp_only=Trueayarlar.
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.