Cara Membuat Sistem Autentikasi (Biar Gak Pusing Login Multi Akun)
Pernah nggak sih, kamu buat aplikasi atau website, terus bingung gimana caranya biar tiap user punya akses masing-masing? Nah, sistem autentikasi adalah jawabannya. Intinya, ini mekanisme buat mastiin yang login itu beneran pemilik akun, bukan maling data. Tenang, nggak serumit yang dibayangkan. Yuk, kita bahas langkah-langkahnya.
—
1. Pilih Metode Autentikasi: Mau Pake Password atau Sosmed?
Ada dua metode populer:
– Password tradisional – user bikin username & password, disimpan di database.
– OAuth (Login Google/Facebook) – biarkan pihak ketiga (Google, dll) yang verifikasi. Lebih praktis, tapi harus daftar aplikasi ke provider.
Buat pemula, password tradisional lebih gampang dipelajari. Tapi kalau mau cepat dan user sudah punya akun Google, OAuth bisa jadi pilihan.
—
2. Simpan Password dengan Aman (Jangan asal nulis di DB!)
Poin paling krusial: jangan pernah simpan password mentah! Kalau database bocor, semua akun celaka. Solusinya pake hashing (misal bcrypt, argon2) atau minimal hash + salt. Intinya, password user diubah jadi kode acak yang nggak bisa dibalik.
Contoh di Node.js (pakai bcrypt):
“`javascript
const bcrypt = require(‘bcrypt’);
const saltRounds = 10;
const hash = await bcrypt.hash(‘password123’, saltRounds);
“`
Nah, hash ini yang disimpan, bukan password asli. Saat login, bandingkan hash input user dengan hash di database.
—
3. Bikin Proses Registrasi yang Sederhana
Form registrasi biasanya butuh:
– Username/email (buat identifikasi)
– Password (min 8 karakter, kombinasi huruf & angka biar aman)
– Konfirmasi password (cek typo)
Jangan lupa validasi di server juga (client-side bisa dimanipulasi). Cek apakah email sudah terdaftar, password cocok, dll. Kalau semua oke, baru hash password dan simpan.
—
4. Login: Cocokkan Data + Beri Token
Saat user login:
1. Cari user berdasarkan email/username.
2. Ambil hash password dari DB.
3. Bandingkan dengan input password (pakai `bcrypt.compare`).
4. Kalau cocok, buat session/token buat tandain user yang sudah login.
Cara klasik: session (disimpan di server, biasanya pake cookie). Atau JWT (JSON Web Token) – token dikirim ke client, disimpan di localStorage/cookie, dan diverifikasi setiap request. JWT lebih cocok buat API atau mobile app karena stateless.
Contoh JWT:
“`javascript
const jwt = require(‘jsonwebtoken’);
const token = jwt.sign({ userId: user.id }, ‘rahasiatahunini’, { expiresIn: ‘1h’ });
“`
Kirim token ini ke client. Setiap request yang butuh autentikasi, client kirim token di header `Authorization`.
—
5. Middleware: Jaga Rute yang Perlu Login
Sekarang, kita butuh mekanisme buat mastiin setiap request ke rute tertentu cuma bisa diakses user yang sudah login. Di Express misal, bikin middleware:
“`javascript
const verifyToken = (req, res, next) => {
const token = req.header(‘Authorization’);
if (!token) return res.status(401).json({ message: ‘Login dulu gih!’ });
jwt.verify(token, ‘rahasia’, (err, decoded) => {
if (err) return res.status(403).json({ message: ‘Token invalid’ });
req.userId = decoded.userId;
next();
});
};
“`
Terus pasang middleware ini di rute yang dilindungi:
“`javascript
app.get(‘/profile’, verifyToken, (req, res) => { … });
“`
—
6. Fitur Tambahan (Opsional Tapi Berguna)
– Logout – kalau pake session, hapus session dari server. Kalau JWT, hapus token dari client (misal hapus cookie/localStorage). Tapi JWT di sisi client bisa tetap valid sampai expired – solusinya bikin blacklist atau pake refresh token.
– Reset password – kirim link via email dengan token khusus (expired 1 jam).
– Rate limiting – batasi percobaan login (misal 5 kali gagal, blokir 15 menit) untuk cegah brute force.
—
Penutup: Insight Penting
Membuat sistem autentikasi itu ibarat ngunci pintu rumah. Simpel kalau cuma pasang gembok (password hashing), tapi makin kompleks kalau kamu butuh kamera (logging), alarm (rate limiting), dan kunci cadangan (OAuth). Jangan pernah anggap remeh keamanan – satu celah bisa bikin data user melayang.
Yang paling penting: selalu update dependensi (misal bcrypt versi baru), jangan simpan rahasia (secret key) di kode yang bisa dilihat publik, dan uji coba autentikasi dengan skenario serangan (SQL injection, XSS). Ingat, autentikasi bukan sekadar “biar user login”, tapi juga perlindungan data dan kepercayaan user.
Setelah memahami dasar ini, kamu bisa eksplorasi sistem yang lebih canggih seperti multi-faktor autentikasi (MFA) atau SSO. Selamat coding, jangan lupa backup database! 😉