Lewati ke konten

Middleware Basic Auth

Referensi: Panduan HTTP Authentication MDN

Middleware HTTP Basic Authentication melindungi rute dengan kredensial username dan password, dan tetap sederhana serta aman untuk dikonfigurasi.

Penggunaan Dasar

Lindungi rute dengan Basic Auth memakai Mware.basicAuth():

typescript
import { 
Mware
,
Router
} from '@neabyte/deserve'
const
router
= new
Router
()
// Jaga rute dengan daftar user
router
.
use
(
Mware
.
basicAuth
({
users
: [
{
username
: 'admin',
password
: 'secret'
}, {
username
: 'user',
password
: 'pass'
} ] }) ) await
router
.
serve
(8000)

Proteksi Spesifik Rute

Terapkan Basic Auth hanya ke rute tertentu:

typescript
// Lindungi hanya rute /api
router
.
use
(
'/api',
Mware
.
basicAuth
({
users
: [
{
username
: 'admin',
password
: 'secret'
} ] }) ) // Lindungi rute admin dengan kredensial berbeda
router
.
use
(
'/admin',
Mware
.
basicAuth
({
users
: [
{
username
: 'admin',
password
: 'admin123'
} ] }) )

Banyak User

Dukung beberapa akun user:

typescript
router
.
use
(
Mware
.
basicAuth
({
users
: [
{
username
: 'admin',
password
: 'admin123'
}, {
username
: 'user',
password
: 'user123'
}, {
username
: 'guest',
password
: 'guest123'
} ] }) )

Realm Kustom

Opsi realm menamai area terlindungi di prompt browser dan default ke 'Secure Area':

typescript
// Namai area yang muncul di prompt
router
.
use
(
Mware
.
basicAuth
({
realm
: 'Admin Panel',
users
: [
{
username
: 'admin',
password
: 'secret'
} ] }) )

Penanganan Error

Login yang gagal menghasilkan 401 Unauthorized dan header WWW-Authenticate: Basic realm="...", yang membuat browser menampilkan prompt login. Realm default ke 'Secure Area' dan bisa diganti lewat opsi realm. Kredensial diperiksa dalam waktu konstan untuk menghindari kebocoran timing, dan array users kosong melempar Deno.errors.InvalidData saat middleware dibuat.

Tiap penolakan memancarkan event auth:failed dengan alasannya - missing, malformed, atau invalid - dibahas di Referensi Event. Response 401 dialirkan ke error handler terpusat, jadi bentuk response di sana atau andalkan perilaku default.

Autentikasi Browser

Browser meminta kredensial otomatis ketika rute terlindungi diakses:

Username: admin
Password: ******

Dirilis di bawah Lisensi MIT.