Sitemap
Muh. Alif Anhar

Muh. Alif Anhar

Founder ZeeTech IT Solution & ZeeTech Academy, passionate in web development and teaching at Telkom High School

Belajar Role-Based Access Control (RBAC) di Express.js

4 min readFeb 4, 2026
Press enter or click to view image in full size

Membatasi Hak Akses User dengan JWT

Pada materi sebelumnya, kita sudah berhasil:

  • Membuat sistem register & login
  • Mengamankan password dengan bcrypt
  • Menggunakan JWT sebagai bukti autentikasi
  • Melindungi endpoint menggunakan middleware auth

Namun, muncul pertanyaan penting berikutnya:

Apakah semua user boleh mengakses semua fitur?
Bagaimana jika ada fitur khusus admin?

Jawabannya adalah ROLE-BASED ACCESS CONTROL (RBAC).

Konsep Dasar

1. Authentication
Menjawab pertanyaan:

Siapa kamu?

Contoh:

  • Login berhasil
  • Token valid

2. Authorization
Menjawab pertanyaan:

Boleh ngapain saja kamu?

Contoh:

  • Admin → boleh tambah & hapus data
  • User → hanya boleh lihat data

JWT = authentication
ROLE = authorization

Studi Kasus Sederhana

| Role  | Hak Akses          |
| ----- | ------------------ |
| admin | CRUD produk |
| user | hanya lihat produk |

STEP 1 — Menambahkan Kolom role di Tabel Users
Tambahkan kolom role di database:

ALTER TABLE users ADD role VARCHAR(20) DEFAULT 'user';

Penjelasan:

  • Default user baru = user
  • Admin bisa dibuat manual
Press enter or click to view image in full size
Contoh Kolom Role

Contoh data:

| id | username | password | role  |
| -- | -------- | -------- | ----- |
| 1 | admin | hash | admin |
| 2 | budi | hash | user |

STEP 2 — Update Register (Sederhana & Aman)
File /src/controller/userController.js

Press enter or click to view image in full size
File /src/controller/userController.js

Kenapa role tidak dari input user?
Karena:

  • User tidak boleh menentukan sendiri hak aksesnya
  • Lebih aman

STEP 3 — Memasukkan Role ke JWT
Update fungsi login:

Press enter or click to view image in full size
File /src/controller/userController.js
File /src/controller/userController.js

Penjelasan:
JWT sekarang membawa:

  • id
  • username
  • role

JWT menjadi identitas lengkap user

Get Muh. Alif Anhar’s stories in your inbox

Join Medium for free to get updates from this writer.

STEP 4 — Middleware Authorization (Cek Role)
Buat middleware baru:
File /src/middleware/role.js

File /src/middleware/role.js

STEP 5 — Penjelasan Middleware Role
Middleware ini bekerja setelah auth:

  1. Token diverifikasi
  2. Data user ada di req.user
  3. Role dicek
  4. Jika role tidak sesuai → ditolak

403 = Forbidden (sudah login tapi tidak punya hak)

STEP 6 — Implementasi di Routing
File /src/router/router.js

Press enter or click to view image in full size
Memanggil file Role
Press enter or click to view image in full size
File /src/router/router.js

STEP 7 — Alur Akses Endpoint (Versi Lengkap)

Client Request
↓
Kirim JWT
↓
Auth Middleware (cek token)
↓
Role Middleware (cek role)
↓
Controller

Client mengirimkan permintaan ke server dengan menyertakan JWT sebagai “paspor digital” di dalam header pesan. Begitu permintaan tiba, ia harus melewati Auth Middleware yang bertugas memeriksa keaslian token tersebut. Jika token valid dan belum kedaluwarsa, identitas pengguna akan diakui. Setelah lolos, permintaan berlanjut ke Role Middleware untuk memastikan bahwa pengguna tersebut memiliki level akses atau jabatan yang sesuai (misalnya sebagai Admin) untuk membuka fitur yang diminta. Jika semua syarat keamanan dan hak akses terpenuhi, barulah permintaan diteruskan ke Controller, yaitu bagian inti program yang akan mengeksekusi logika bisnis, mengambil data yang diperlukan, dan memberikan jawaban akhir kembali kepada pengguna.

Jika:

  • Token invalid → 401
  • Token valid tapi role salah → 403
  • Token valid & role sesuai → sukses

STEP 8 — Testing di Thunder Client

Login sebagai USER

  • Akses GET → ✅
  • POST / PUT / DELETE → ❌ 403

Login sebagai ADMIN

  • Semua endpoint → ✅

Penutup Modul

Sampai tahap ini, siswa sudah mampu membangun backend profesional:

  • Login aman
  • JWT
  • Middleware
  • Hak akses user

Materi lanjutan yang sangat direkomendasikan:

  • Logout (Blacklist Token)
  • Refresh Token
  • Soft Delete
  • REST API Best Practice
  • Mini Project Backend

--

--

Muh. Alif Anhar
Muh. Alif Anhar

Written by Muh. Alif Anhar

Founder ZeeTech IT Solution & ZeeTech Academy, passionate in web development and teaching at Telkom High School