microdot.auth — HTTP kimlik doğrulama¶
Rotaları HTTP kimlik doğrulamasının arkasına alan dekoratörler. İki türü vardır: tarayıcıların doğal olarak istem gösterdiği Authorization: Basic <base64> şeması için BasicAuth ve API’lerin kullandığı Authorization: Bearer <token> şeması için TokenAuth.
Her iki sınıf da ortak bir BaseAuth tabanından türer; bir uygulama auth nesnesini oluşturur, authenticate() ile bir kimlik doğrulama geri çağırması (callback) kaydeder, ardından korunan rotaları auth örneğiyle dekore eder.
class BasicAuth¶
- class microdot.auth.BasicAuth(realm: str = 'Please login', charset: str = 'UTF-8', scheme: str = 'Basic', error_status: int = 401)¶
HTTP Basic kimlik doğrulama. Kimliği doğrulanmamış bir istek korunan bir rotaya ulaştığında tarayıcı bir kullanıcı adı / parola iletişim kutusu açar ve sonraki isteklerde
Authorization: Basic <base64(user:pass)>gönderir.- realm
Tarayıcının istem yanında gösterdiği realm dizesi.
- charset
WWW-Authenticatezorlamasında bildirilen karakter kümesi.- scheme
Kimlik doğrulama şeması adı. Varsayılan
'Basic'.- error_status
Başarısız kimlik doğrulamada döndürülen HTTP durumu. Varsayılan 401.
- authenticate(f)¶
Kimlik bilgisi kontrolünü kaydeden dekoratör. f,
(request, username, password)alır ve kimliği doğrulanmış kullanıcı nesnesini (veya hatalı kimlik bilgilerindeNone) döndürür. Döndürülen nesnerequest.g.current_userüzerinde saklanır.basic = BasicAuth(realm='Camera') @basic.authenticate async def check(request, username, password): user = users.get(username) if user and user.check_password(password): return user
- __call__(f)¶
Bir rotayı
BasicAuthörneğiyle dekore etmek onu korur:@app.route('/admin') @basic def admin(request): return 'hello ' + request.g.current_user.name
- optional(f)¶
Tıpkı
__call__()gibi, ancak kimlik bilgisi içermeyen istekleri reddetmez – işleyici yine de çalışır verequest.g.current_userya kimliği doğrulanmış kullanıcıya ya daNonedeğerine ayarlanır.
class TokenAuth¶
- class microdot.auth.TokenAuth(header: str = 'Authorization', scheme: str = 'Bearer', error_status: int = 401)¶
Bearer-token kimlik doğrulama. İstemciler
Authorizationbaşlığında bir token gönderir; uygulama bunu istediği herhangi bir destekleyici depoya karşı doğrular.- header
Token’ı taşıyan başlık adı. Varsayılan
'Authorization', değerinBearer <token>olmasını bekler; özel bir başlık ise token değerini doğrudan taşır.- scheme
Authorizationbaşlığı için auth şeması. Varsayılan'Bearer'.- error_status
Kimlik doğrulama başarısızlığında HTTP durumu. Varsayılan 401.
- authenticate(f)¶
Token kontrolünü kaydeden dekoratör. f,
(request, token)alır ve bir kullanıcı nesnesi veyaNonedöndürür:import jwt tokens = TokenAuth() @tokens.authenticate async def check(request, token): try: claims = jwt.decode(token, SECRET) except jwt.exceptions.PyJWTError: return None return claims['sub']
- errorhandler(f)¶
Varsayılan 401 yanıtını geçersiz kılan dekoratör. f, request nesnesini alır ve bir yanıt döndürür (veya iptal eder).
- __call__(f: Callable) Callable¶
Bir rotayı
TokenAuthörneğiyle dekore etmek onu korur. Geçerli bir token içermeyen istekler reddedilir (varsayılan olarak 401 veyaerrorhandler()ne döndürürse). Başarı durumunda kimliği doğrulanmış kullanıcırequest.g.current_userüzerinde yer alır:@app.get('/api/me') @tokens async def me(request): return {'user': request.g.current_user}
Sarmalanan işleyiciyi döndürür.
- optional(f: Callable) Callable¶
Tıpkı
__call__()gibi, ancak token içermeyen istekleri reddetmez – işleyici yine de çalışır verequest.g.current_userya kimliği doğrulanmış kullanıcıya ya daNonedeğerine ayarlanır. Çağıranın kimliğinin doğrulanmış olup olmamasına göre çıktısını değiştiren, ancak bunu gerektirmeyen rotalar için kullanışlıdır:@app.get('/api/feed') @tokens.optional async def feed(request): if request.g.current_user: return personalized_feed(request.g.current_user) return public_feed()
Sarmalanan işleyiciyi döndürür.
class BaseAuth¶
- class microdot.auth.BaseAuth¶
BasicAuthveTokenAuthiçin ortak taban. Özel auth şemaları bunu alt sınıf olarak türetebilir.- auth_callback: Callable | None¶
authenticatearacılığıyla kaydedilen geri çağırma (callback). Uygulama geri çağırmayı kaydedene kadarNoneolur (bir fonksiyonu@auth.authenticateile dekore etmek onu ayarlar).
- error_callback: Callable¶
Kimlik doğrulama başarısızlığında gönderilen yanıtı döndüren asenkron çağrılabilir. Yapıcı tarafından 401 yanıtı döndüren bir varsayılana ayarlanır; bunu
TokenAuthüzerindekierrorhandleraracılığıyla veya özel birBaseAuthalt sınıfı üzerinde doğrudan değiştirin.
Dekore edilen rotalar, kimlik doğrulama geri çağırmasından döndürülen değerle doldurulmuş request.g.current_user alır. Rota içinde, çağıranı tanımlamak için bu özniteliği inceleyin.