microdot.auth --- Autentikasi HTTP¶
Dekorator yang melindungi rute dengan autentikasi HTTP. Dua jenis: BasicAuth untuk skema Authorization: Basic <base64> yang diminta browser secara bawaan, dan TokenAuth untuk skema Authorization: Bearer <token> yang digunakan oleh API.
Kedua kelas diturunkan dari basis BaseAuth yang sama; sebuah aplikasi membuat objek auth, mendaftarkan callback autentikasi dengan authenticate(), kemudian mendekorasi rute yang dilindungi dengan instans auth.
class BasicAuth¶
- class microdot.auth.BasicAuth(realm: str = 'Please login', charset: str = 'UTF-8', scheme: str = 'Basic', error_status: int = 401)¶
Autentikasi HTTP Basic. Browser menampilkan dialog nama pengguna / kata sandi saat permintaan yang tidak terautentikasi mencapai rute yang dilindungi dan mengirimkan
Authorization: Basic <base64(user:pass)>pada permintaan berikutnya.- realm
String realm yang ditampilkan browser di samping prompt.
- charset
Charset yang diiklankan dalam tantangan
WWW-Authenticate.- scheme
Nama skema autentikasi. Default
'Basic'.- error_status
Status HTTP yang dikembalikan saat autentikasi gagal. Default 401.
- authenticate(f)¶
Dekorator yang mendaftarkan pemeriksaan kredensial. f menerima
(request, username, password)dan mengembalikan objek pengguna yang terautentikasi (atauNonejika kredensial salah). Objek yang dikembalikan disimpan direquest.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)¶
Mendekorasi rute dengan instans
BasicAuthakan melindunginya:@app.route('/admin') @basic def admin(request): return 'hello ' + request.g.current_user.name
- optional(f)¶
Seperti
__call__(), tetapi tidak menolak permintaan yang tidak memiliki kredensial -- handler tetap berjalan, denganrequest.g.current_userdiatur ke pengguna yang terautentikasi atauNone.
class TokenAuth¶
- class microdot.auth.TokenAuth(header: str = 'Authorization', scheme: str = 'Bearer', error_status: int = 401)¶
Autentikasi token Bearer. Klien mengirimkan token dalam header
Authorization; aplikasi memvalidasinya terhadap penyimpanan data apa pun yang diinginkan.- header
Nama header yang membawa token. Default
'Authorization'mengharapkan nilaiBearer <token>; header kustom membawa nilai token secara langsung.- scheme
Skema auth untuk header
Authorization. Default'Bearer'.- error_status
Status HTTP saat autentikasi gagal. Default 401.
- authenticate(f)¶
Dekorator yang mendaftarkan pemeriksaan token. f menerima
(request, token)dan mengembalikan objek pengguna atauNoneimport 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 yang mengganti respons 401 default. f menerima objek request dan mengembalikan respons (atau membatalkan).
- __call__(f: Callable) Callable¶
Mendekorasi rute dengan instans
TokenAuthakan melindunginya. Permintaan tanpa token yang valid ditolak (401 secara default, atau apa pun yang dikembalikanerrorhandler()). Saat berhasil, pengguna yang terautentikasi ada direquest.g.current_user@app.get('/api/me') @tokens async def me(request): return {'user': request.g.current_user}
Mengembalikan handler yang dibungkus.
- optional(f: Callable) Callable¶
Seperti
__call__(), tetapi tidak menolak permintaan yang tidak memiliki token -- handler tetap berjalan, denganrequest.g.current_userdiatur ke pengguna yang terautentikasi atauNone. Berguna untuk rute yang mengubah keluarannya berdasarkan apakah pemanggil terautentikasi tanpa membutuhkannya:@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()
Mengembalikan handler yang dibungkus.
class BaseAuth¶
- class microdot.auth.BaseAuth¶
Basis umum untuk
BasicAuthdanTokenAuth. Skema auth kustom dapat menurunkannya.- auth_callback: Callable | None¶
Callback yang didaftarkan melalui
authenticate.Nonesampai aplikasi mendaftarkan callback (mendekorasi fungsi dengan@auth.authenticateadalah yang menetapkannya).
- error_callback: Callable¶
Callable async yang mengembalikan respons yang dikirim saat autentikasi gagal. Diatur oleh konstruktor ke default yang mengembalikan respons 401; ganti melalui
errorhandlerpadaTokenAuth, atau langsung pada subkelasBaseAuthkustom.
Rute yang didekorasi mendapatkan request.g.current_user yang diisi dengan nilai yang dikembalikan dari callback autentikasi. Di dalam rute, periksa atribut tersebut untuk mengidentifikasi pemanggil.