‹ Daftar slidePertemuan 6: Pengembangan halaman login interaktif dengan validasi dan pengamanan
Mata Kuliah Lab Pemrograman • Bisnis Digital
Halaman Login Interaktif
Pertemuan 6 — Validasi dan Pengamanan Dasar
Setelah menguasai state dan props pekan lalu, hari ini kita pakai keduanya untuk kasus paling sering ditemui pada aplikasi bisnis digital: halaman login — lengkap dengan aturan validasi dan langkah pengamanan dasar.
RPS MINGGU 6 • 2X50 MENIT
Tujuan Pembelajaran Hari Ini
Melanjutkan konsep state dan props dari Pertemuan 5, hari ini Anda membangun halaman login yang fungsional dan aman:
CAPAIAN 1 — VALIDASI
MEMVALIDASI INPUT
Menerapkan aturan validasi format email dan panjang kata sandi sebelum data dikirim ke server.
CAPAIAN 2 — PENGAMANAN
MENGAMANKAN DATA
Menerapkan langkah pengamanan dasar: penyembunyian kata sandi, larangan simpan teks polos, dan koneksi terenkripsi.
Sub-CPMK Minggu 6: mahasiswa mampu mengembangkan halaman login interaktif dengan validasi dan pengamanan dasar menggunakan React Native.
Bagian 1 dari 3
Membangun Formulir Login dengan State
Setiap ketikan pengguna di kolom email dan kata sandi perlu "diingat" komponen — di sinilah state kembali berperan.
Analogi: Formulir Kertas vs Formulir Digital Terpantau
FORMULIR KERTAS
TIDAK TERPANTAU
Petugas hanya membaca isian saat formulir diserahkan di akhir. Sistem tidak tahu apa yang sedang Anda tulis selagi Anda menulis.
FORMULIR DIGITAL LOGIN
TERPANTAU REAL-TIME
Setiap huruf yang diketik langsung tersimpan di state, sehingga aplikasi bisa langsung memvalidasi — misalnya memberi tanda merah begitu format email salah.
Glosarium — komponen terkontrol (controlled component): komponen input yang nilainya sepenuhnya diatur oleh state React Native, bukan disimpan sendiri oleh komponen input tersebut.
Membuat State untuk Email & Kata Sandi
Dua kolom login butuh dua state terpisah, masing-masing dibuat dengan useState:
// State untuk menyimpan ketikan pengguna const [email, setEmail] = useState(''); const [sandi, setSandi] = useState('');
email / setEmail
Menyimpan teks yang diketik di kolom email, nilai awal string kosong ''.
sandi / setSandi
Menyimpan teks yang diketik di kolom kata sandi, nilai awal string kosong ''.
Glosarium — secureTextEntry: properti bawaan TextInput yang menyembunyikan karakter yang diketik pengguna, ditampilkan sebagai titik atau bintang — langkah pengamanan paling dasar pada kolom kata sandi.
Hitung dari Nol: Melacak Panjang Kata Sandi
Syarat minimal kata sandi adalah 8 karakter. Mari lacak nilai sandi.length saat pengguna mengetik bertahap.
Langkah
Perhitungan
Panjang sandi
Ketik "sandi"
s-a-n-d-i = 5 karakter
5
Tambah "123"
5 + 3 karakter
8
Uji syarat minimal
8 ≥ 8
valid = true
Tambah simbol "!"
8 + 1 karakter
9
HASIL AKHIR
9 ≥ 8
"sandi123!" memenuhi syarat panjang minimal — tombol masuk boleh aktif
Walkthrough: Tombol Masuk Aktif atau Tidak
Tombol "Masuk" sebaiknya hanya bisa ditekan kalau semua syarat validasi terpenuhi — mencegah pengguna mengirim data yang jelas salah.
email = "budi@toko.id", sandi = "sandi123" → formValid = true → tombol aktif dan bisa ditekan.
Bagian 2 dari 3
Validasi — Menyaring Input Sebelum Dikirim
Bukan sekadar mengaktifkan tombol, validasi juga memberi tahu pengguna dengan tepat apa yang perlu diperbaiki.
Aturan Validasi Formulir Login
VALIDASI EMAIL
Harus mengandung tanda "@" dan domain (mis. ".com", ".id") menggunakan pola regex sederhana.
VALIDASI KATA SANDI
Minimal 8 karakter, disarankan mengandung huruf besar, angka, dan simbol agar lebih sulit ditebak.
Glosarium — regex (regular expression): pola teks yang dipakai untuk mencocokkan format string tertentu, misalnya memastikan sebuah teks berbentuk alamat email yang sah.
Menulis Fungsi Validasi
// Pola regex sederhana untuk format email const polaEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
functionvalidasiForm() { if (!polaEmail.test(email)) return"Format email tidak valid"; if (sandi.length < 8) return"Kata sandi minimal 8 karakter"; return""; // kosong artinya tidak ada kesalahan }
Fungsi ini dipanggil setiap kali pengguna menekan tombol "Masuk" atau setiap ketikan berubah, hasilnya disimpan di state pesanError.
Hitung dari Nol: Skor Kekuatan Kata Sandi
Kata sandi "Toko0102!" diuji dengan 4 kriteria kekuatan. Tiap kriteria terpenuhi bernilai 1 poin.
Kriteria
Pemeriksaan
Poin
Panjang minimal 8
9 karakter ≥ 8
1
Ada huruf besar
"T" pada "Toko"
1
Ada angka
"0102" terdeteksi
1
Ada simbol
"!" terdeteksi
1
SKOR TOTAL
4 dari 4
1 + 1 + 1 + 1 = 4 → kategori "Kata Sandi Kuat"
Coba Sendiri: Uji Kekuatan Kata Sandi Anda
Ketik beberapa kata sandi berbeda, lalu amati bagaimana skor kekuatan dan entropinya berubah.
Glosarium — rendering kondisional: teknik menampilkan elemen JSX hanya jika suatu kondisi bernilai benar, memakai operator && — elemen di sisi kanan hanya muncul jika sisi kiri bernilai true.
Bagian 3 dari 3
Pengamanan Dasar Halaman Login
Validasi menjaga data masuk rapi, tapi pengamanan menjaga data pengguna tidak bocor.
Tiga Prinsip Pengamanan yang Wajib Diterapkan
1. SEMBUNYIKAN SANDI
secureTextEntry aktif di kolom kata sandi, mencegah "pengintipan bahu" (shoulder surfing) saat pengguna mengetik di tempat umum.
2. JANGAN SIMPAN TEKS POLOS
Kata sandi tidak pernah disimpan mentah di state jangka panjang atau database — server harus melakukan hashing sebelum menyimpannya.
3. KONEKSI TERENKRIPSI
Data login dikirim lewat HTTPS (bukan HTTP biasa) agar tidak bisa disadap saat melintasi jaringan.
Glosarium — hashing: proses mengubah kata sandi menjadi kode acak satu-arah yang tidak bisa dikembalikan ke teks aslinya, dilakukan di sisi server sebelum disimpan ke database.
Alur Data: Dari Ketikan hingga Server
Kesalahan Umum Pemula pada Halaman Login
KESALAHAN 1
Lupa secureTextEntry pada kolom kata sandi, sehingga karakter tampil jelas dan bisa terbaca orang di sekitar pengguna.
KESALAHAN 2
Validasi hanya di aplikasi (client-side) tanpa validasi ulang di server — pengguna jahat bisa melewati aplikasi dan mengirim data langsung ke server.
Ingat: validasi di aplikasi mobile hanya untuk kenyamanan pengguna; validasi di server tetap wajib karena aplikasi bisa "dilewati" oleh pihak yang tahu cara mengaksesnya langsung.
Latihan Praktik (30 Menit)
Bangun halaman Login untuk aplikasi UMKM proyek Anda dengan ketentuan berikut:
Instruksi
Buat stateemail dan sandi, hubungkan ke dua TextInput terkontrol.
Aktifkan secureTextEntry pada kolom kata sandi.
Tulis fungsi validasiForm(): email wajib mengandung "@", sandi minimal 8 karakter.
Tampilkan pesan error secara kondisional, dan tombol "Masuk" hanya aktif jika form valid.
Kerjakan berpasangan di Expo Go. Dosen akan berkeliling untuk memeriksa hasil dan menjawab pertanyaan.
Rangkuman Konsep Kunci
VALIDASI
SARING INPUT
Regex untuk format email, cek panjang untuk kata sandi, pesan error ditampilkan secara kondisional.
PENGAMANAN
LINDUNGI DATA
secureTextEntry, hashing di server, dan koneksi HTTPS — tiga lapis pertahanan dasar.
Validasi menjaga kualitas data yang masuk; pengamanan menjaga kerahasiaan data pengguna. Halaman login yang baik butuh keduanya sekaligus.
Penutup & Tugas Mandiri
Tugas Sebelum Pertemuan 7
Selesaikan halaman Login dari latihan praktik, unggah ke repository proyek masing-masing.
Tambahkan validasi tambahan: konfirmasi kata sandi (kolom kedua) harus sama persis dengan kolom pertama.
Baca ulang glosarium regex, hashing, dan HTTPS sebagai bekal diskusi navigasi Pertemuan 7.
Pertemuan 7 kita akan menyambungkan halaman login ini ke navigasi antarhalaman — setelah login berhasil, pengguna otomatis berpindah ke halaman beranda.