microdot.auth — HTTP autentifikacija¶
Dekoratori koji štite rute iza HTTP autentifikacije. Dvije inačice: BasicAuth za shemu Authorization: Basic <base64> koju preglednici izvorno traže, i TokenAuth za shemu Authorization: Bearer <token> koju koriste API-ji.
Obje klase izvedene su iz zajedničke osnovne klase BaseAuth; aplikacija konstruira auth objekt, registrira povratni poziv za autentifikaciju pomoću authenticate(), a zatim dekorira zaštićene rute auth instancom.
class BasicAuth¶
- class microdot.auth.BasicAuth(realm: str = 'Please login', charset: str = 'UTF-8', scheme: str = 'Basic', error_status: int = 401)¶
HTTP Basic autentifikacija. Preglednik prikazuje dijalog za korisničko ime / lozinku kada neautenticirani zahtjev pogodi zaštićenu rutu i šalje
Authorization: Basic <base64(user:pass)>na sljedećim zahtjevima.- realm
Niz područja (realm) koji preglednik prikazuje pored upita.
- charset
Skup znakova oglašen u izazovu
WWW-Authenticate.- scheme
Naziv sheme autentifikacije. Zadano
'Basic'.- error_status
HTTP status vraćen pri neuspjeloj autentifikaciji. Zadano 401.
- authenticate(f)¶
Dekorator koji registrira provjeru vjerodajnica. f prima
(request, username, password)i vraća objekt autenticiranog korisnika (iliNonepri pogrešnim vjerodajnicama). Vraćeni objekt sprema se urequest.g.current_user.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)¶
Dekoriranje rute instancom
BasicAuthštiti je:@app.route('/admin') @basic def admin(request): return 'hello ' + request.g.current_user.name
- optional(f)¶
Poput
__call__(), ali ne odbija zahtjeve kojima nedostaju vjerodajnice – rukovatelj se i dalje izvršava, srequest.g.current_userpostavljenim na autenticiranog korisnika ili naNone.
class TokenAuth¶
- class microdot.auth.TokenAuth(header: str = 'Authorization', scheme: str = 'Bearer', error_status: int = 401)¶
Autentifikacija putem Bearer tokena. Klijenti šalju token u zaglavlju
Authorization; aplikacija ga provjerava prema bilo kojem pozadinskom spremištu koje želi.- header
Naziv zaglavlja koje nosi token. Zadano
'Authorization'očekuje vrijednostBearer <token>; prilagođeno zaglavlje nosi vrijednost tokena izravno.- scheme
Auth shema za zaglavlje
Authorization. Zadano'Bearer'.- error_status
HTTP status pri neuspjehu autentifikacije. Zadano 401.
- authenticate(f)¶
Dekorator koji registrira provjeru tokena. f prima
(request, token)i vraća korisnički objekt iliNoneimport 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)¶
Dekorator koji nadjačava zadani odgovor 401. f prima objekt zahtjeva i vraća odgovor (ili prekida).
- __call__(f: Callable) Callable¶
Dekoriranje rute instancom
TokenAuthštiti je. Zahtjevi bez valjanog tokena se odbijaju (zadano 401, ili što goderrorhandler()vrati). Pri uspjehu autenticirani korisnik nalazi se urequest.g.current_user@app.get('/api/me') @tokens async def me(request): return {'user': request.g.current_user}
Vraća omotani rukovatelj.
- optional(f: Callable) Callable¶
Poput
__call__(), ali ne odbija zahtjeve kojima nedostaje token – rukovatelj se i dalje izvršava, srequest.g.current_userpostavljenim na autenticiranog korisnika ili naNone. Korisno za rute koje mijenjaju svoj izlaz ovisno o tome je li pozivatelj autenticiran, a da to ne zahtijevaju:@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()
Vraća omotani rukovatelj.
class BaseAuth¶
- class microdot.auth.BaseAuth¶
Zajednička osnova za
BasicAuthiTokenAuth. Prilagođene auth sheme mogu je naslijediti.- auth_callback: Callable | None¶
Povratni poziv registriran putem
authenticate.Nonedok aplikacija ne registrira povratni poziv (dekoriranje funkcije s@auth.authenticatega postavlja).
- error_callback: Callable¶
Asinkroni pozivljivi objekt koji vraća odgovor poslan pri neuspjehu autentifikacije. Postavlja ga konstruktor na zadanu vrijednost koja vraća odgovor 401; zamijenite ga putem
errorhandlernaTokenAuth, ili izravno na prilagođenoj podklasiBaseAuth.
Dekorirane rute dobivaju request.g.current_user popunjen vrijednošću vraćenom iz povratnog poziva za autentifikaciju. Unutar rute, pregledajte taj atribut da biste identificirali pozivatelja.