microdot.auth — HTTP-todennus¶
Dekoraattorit, jotka suojaavat reittejä HTTP-todennuksen taakse. Kahta tyyppiä: BasicAuth skeemalle Authorization: Basic <base64>, jota selaimet pyytävät natiivisti, ja TokenAuth skeemalle Authorization: Bearer <token>, jota API:t käyttävät.
Molemmat luokat periytyvät yhteisestä BaseAuth-kantaluokasta; sovellus rakentaa todennusobjektin, rekisteröi todennuksen takaisinkutsun metodilla authenticate() ja dekoroi sitten suojatut reitit todennusinstanssilla.
class BasicAuth¶
- class microdot.auth.BasicAuth(realm: str = 'Please login', charset: str = 'UTF-8', scheme: str = 'Basic', error_status: int = 401)¶
HTTP Basic -todennus. Selain avaa käyttäjänimi/salasana-valintaikkunan, kun todentamaton pyyntö osuu suojattuun reittiin, ja lähettää
Authorization: Basic <base64(user:pass)>seuraavissa pyynnöissä.- realm
Realm-merkkijono, jonka selain näyttää kehotteen vieressä.
- charset
Merkistö, joka ilmoitetaan
WWW-Authenticate-haasteessa.- scheme
Todennusskeeman nimi. Oletus
'Basic'.- error_status
Epäonnistuneessa todennuksessa palautettava HTTP-tila. Oletus 401.
- authenticate(f)¶
Dekoraattori, joka rekisteröi tunnistetietojen tarkistuksen. f ottaa parametrit
(request, username, password)ja palauttaa todennetun käyttäjäobjektin (taiNonevirheellisillä tunnistetiedoilla). Palautettu objekti tallennetaan kohteeseenrequest.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)¶
Reitin dekorointi
BasicAuth-instanssilla suojaa sen:@app.route('/admin') @basic def admin(request): return 'hello ' + request.g.current_user.name
- optional(f)¶
Kuten
__call__(), mutta ei hylkää pyyntöjä, joista puuttuvat tunnistetiedot – käsittelijä suoritetaan silti, jarequest.g.current_useron asetettu joko todennetuksi käyttäjäksi tai arvoonNone.
class TokenAuth¶
- class microdot.auth.TokenAuth(header: str = 'Authorization', scheme: str = 'Bearer', error_status: int = 401)¶
Bearer-token-todennus. Asiakkaat lähettävät tokenin
Authorization-otsakkeessa; sovellus validoi sen haluamaansa taustasäilöä vasten.- header
Otsakkeen nimi, joka kuljettaa tokenin. Oletus
'Authorization'odottaa arvoaBearer <token>; mukautettu otsake kuljettaa token-arvon suoraan.- scheme
Authorization-otsakkeen todennusskeema. Oletus'Bearer'.- error_status
Todennuksen epäonnistuessa palautettava HTTP-tila. Oletus 401.
- authenticate(f)¶
Dekoraattori, joka rekisteröi token-tarkistuksen. f ottaa parametrit
(request, token)ja palauttaa käyttäjäobjektin taiNoneimport 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)¶
Dekoraattori, joka ohittaa oletusarvoisen 401-vastauksen. f ottaa pyyntöobjektin ja palauttaa vastauksen (tai keskeyttää).
- __call__(f: Callable) Callable¶
Reitin dekorointi
TokenAuth-instanssilla suojaa sen. Pyynnöt ilman kelvollista tokenia hylätään (oletuksena 401 tai mitä tahansaerrorhandler()palautti). Onnistuessa todennettu käyttäjä on kohteessarequest.g.current_user@app.get('/api/me') @tokens async def me(request): return {'user': request.g.current_user}
Palauttaa käärityn käsittelijän.
- optional(f: Callable) Callable¶
Kuten
__call__(), mutta ei hylkää pyyntöjä, joista puuttuu token – käsittelijä suoritetaan silti, jarequest.g.current_useron asetettu joko todennetuksi käyttäjäksi tai arvoonNone. Hyödyllinen reiteille, jotka muuttavat tulostettaan sen mukaan, onko kutsuja todennettu, ilman että sitä vaaditaan:@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()
Palauttaa käärityn käsittelijän.
class BaseAuth¶
- class microdot.auth.BaseAuth¶
Yhteinen kantaluokka luokille
BasicAuthjaTokenAuth. Mukautetut todennusskeemat voivat periytyä siitä.- auth_callback: Callable | None¶
Metodilla
authenticaterekisteröity takaisinkutsu.Nonesiihen asti, kunnes sovellus rekisteröi takaisinkutsun (funktion dekorointi merkinnällä@auth.authenticateasettaa sen).
- error_callback: Callable¶
Asynkroninen kutsuttava, joka palauttaa todennuksen epäonnistuessa lähetettävän vastauksen. Konstruktori asettaa sen oletukseksi, joka palauttaa 401-vastauksen; korvaa se metodilla
errorhandlerluokassaTokenAuthtai suoraan mukautetussaBaseAuth-aliluokassa.
Dekoroiduille reiteille request.g.current_user täytetään todennuksen takaisinkutsun palauttamalla arvolla. Tutki tätä attribuuttia reitin sisällä kutsujan tunnistamiseksi.