Latihan 1 dari materi JSON Web Token (JWT) di Auth — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi dua function di kode awal. Token uji di kode awal sudah ada, dan payload-nya {"userId":42,"role":"admin","iat":1700000000,"exp":1700086400}.
decodeJWT(token): kembalikan object payload dari token, tanpa memeriksa signature (decode saja, bukan verify). Langkahnya: split('.'), ambil bagian kedua, ganti - jadi + dan _ jadi /, lalu atob() dan JSON.parse().
isExpired(payload): kembalikan true kalau token sudah kedaluwarsa menurut payload.exp. exp dalam detik, Date.now() dalam milidetik, jadi kalikan exp dengan 1000 dulu. Tepat di detik exp, token dianggap sudah kedaluwarsa.
Empat baris console.log di kode awal sudah ada, biarkan begitu. Output-nya harus persis empat baris ini, berurutan:
42
admin
1700000000
true (exp-nya November 2023, sudah lewat)
Dicek juga: isExpired({ exp: 1 }) hasilnya true, dan payload yang exp-nya satu jam dari sekarang hasilnya false.
Hint
JWT terdiri dari tiga bagian dipisah titik, dan bagian tengahnya payload yang bisa dibaca tanpa kunci apa pun. Waktu di payload dalam detik, waktu JavaScript dalam milidetik.
decodeJWT: ambil token.split('.')[1], ganti karakter base64url ke Base64 biasa dengan replace, lalu atob dan JSON.parse. isExpired: bandingkan payload.exp yang sudah dikali 1000 dengan Date.now().
return JSON.parse(atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))); dan untuk isExpired: return payload.exp * 1000 <= Date.now();
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...