Saat aplikasi web Anda perlu "mengingat" pengguna, aplikasi biasanya menggunakan salah satu dari dua mekanisme: cookie atau sesi. Cookie adalah area penyimpanan kecil di browser tempat Anda dapat menyimpan data terkait pengguna seperti preferensi penelusuran, misalnya. Sesi memungkinkan Anda untuk menyimpan informasi sensitif di server.
Temukan cara menyiapkan sesi di server Express yang diberdayakan oleh Node.js.
Apa yang Anda Butuhkan
Untuk mengikuti tutorial ini, Anda perlu menginstal Node.js dan npm. Setiap versi terbaru dari Node.js harus ikut npm, manajer paket untuk menginstal dependensi.
Anda akan menggunakan npm untuk menginstal Express dan express-session. Ini adalah alat yang akan Anda gunakan untuk membuat server web dan sesi.
Apa itu Sesi di Node.js?
Cookie adalah file kecil yang digunakan browser Anda untuk menyimpan data. Anda dapat menggunakan cookie untuk menyimpan data non-sensitif seperti preferensi pencarian.
Anda tidak boleh menyimpan data sensitif (seperti nama pengguna dan kata sandi) di cookie. Saat browser Anda mengirimkan cookie melalui HTTP, cookie rentan terhadap peretas yang mungkin dapat mencegatnya. Mereka juga disimpan dalam teks biasa di komputer Anda, sehingga peretas berpotensi dapat memeriksanya dan mencuri data Anda.
Alih-alih menyimpan data sensitif sebagai cookie di klien, Anda harus menyimpannya di server. Ini membuatnya terlindungi dari dunia luar.
Sesi memungkinkan Anda menyimpan data sensitif yang dibutuhkan aplikasi Anda untuk mengidentifikasi pengguna. Contohnya adalah nama pengguna, kata sandi, dan email. Mereka lebih aman karena mereka tinggal di server, bukan di klien.
Setiap kali Anda memiliki data yang ingin Anda pertahankan di seluruh permintaan, simpan di sisi server menggunakan sesi. Anda akan mempelajari cara membuat sesi di bagian berikut.
Membuat Sesi di Express Server
Express adalah kerangka web populer untuk Node.js. Ini memungkinkan Anda mengatur aplikasi server web yang mendengarkan permintaan klien di nomor port yang Anda pilih. Anda dapat membuat rute API, menerapkan middleware, dan bahkan menghubungkan aplikasi ke database, semuanya berkat API yang disediakan oleh framework.
1. Buat Proyek Node.js
Buat folder baru untuk proyek Anda, lalu luncurkan alat baris perintah dan cd ke folder itu.
Selanjutnya, jalankan perintah berikut untuk menginisialisasi proyek Node.js:
npm init -y
Ini menghasilkan file package.json di folder root proyek dengan pengaturan default. File package.json untuk menjalankan skrip npm.
2. Instal Express dan sesi ekspres
Anda akan menggunakan Express untuk membuat aplikasi server web. Dan sesi ekspres untuk membuat sesi pada aplikasi server itu.
Di terminal, jalankan perintah berikut untuk menginstal kedua dependensi:
npm saya mengungkapkan sesi ekspres
Setelah menginstal kedua paket, langkah selanjutnya adalah membuat server.
3. Buat Sesi di Aplikasi
Buat file bernama App.js di folder root proyek Anda dan impor dependensinya:
const mengungkapkan = memerlukan('cepat')
const sesi = memerlukan('sesi-ekspres')
aplikasi = ekspres()
Selanjutnya, daftarkan middleware sesi. Lewati objek dengan rahasia properti (untuk menandatangani cookie sessionID) dan cookie.
aplikasi.penggunaan(
sidang({
rahasia: "suatu rahasia",
Kue kering: { maxAge: 30000 },
simpanTidak diinisialisasi: PALSU,
})
);
Di sini Anda menyetel usia maksimum sesi menjadi 30 detik (30000 milidetik). Menyetel saveUninialized ke false sangat penting jika Anda memiliki sistem login. Jika Anda gagal melakukannya, server Anda akan menghasilkan sessionID baru setiap kali pengguna mengirimkan permintaan.
Selanjutnya, buat rute login untuk mengubah sesi. Saat pengguna mencapai rute ini, Anda mengharapkan klien mengirimkan nama pengguna dan kata sandi di badan permintaan. Pertama, Anda mengakses nilai-nilai ini dan memeriksa apakah ada (dan jika pengguna telah mengautentikasi):
aplikasi.posting("/Gabung", (req, res) => {
const { nama pengguna, kata sandi } = req.body;
jika (nama pengguna && kata sandi) {
jika (req.session.authenticated) {
res.json (sesi);
} kalau tidak {
jika (kata sandi "123") {
req.session.authenticated = BENAR;
req.sesi.pengguna = { nama pengguna };
res.json (req.session);
} kalau tidak {
res.status(403).json({ pesan: "Kredensial buruk" });
}
}
} kalau tidak {
res.status(403).json({ pesan: "Kredensial buruk" });
}
});
Dengan pernyataan if pertama, Anda melakukan pemeriksaan dummy. Pemeriksaan ini untuk memastikan bahwa Anda melanjutkan hanya jika nama pengguna dan kata sandi ada.
Selanjutnya, Anda memeriksa apakah pengguna sudah diautentikasi. Jika demikian, kirim sesi kembali ke klien. Jika tidak, setel properti yang diautentikasi ke true dan simpan nama pengguna ke sesi. Kemudian mengirimkannya kembali ke klien.
Dengan kode di atas, server akan mengingat setiap user yang mengirimkan request ke server. Ini karena mereka telah mengautentikasi dan menyimpan detail unik mereka (nama pengguna dan kata sandi) dalam sesi tersebut.
Mulai server Anda dengan menambahkan kode berikut di bagian bawah App.js:
aplikasi.dengarkan(3000, () => {
menghibur.catatan("Server berjalan di port 3000");
});
Untuk menguji rute ini, gunakan klien API untuk mengirim permintaan ke rute masuk yang Anda buat. Pastikan untuk mengirim nama pengguna dan kata sandi di badan permintaan. Berikut tampilan permintaan API Anda jika menggunakan Rest Client:
POSTING http://localhost: 3000/masuk HTTP/1.1
Jenis konten: "aplikasi/json"
{ nama belakang: "Kingsley", kata sandi: "123"}
Jika semuanya berjalan dengan baik, Anda akan mendapatkan objek berikut:
{
"Kue kering": {
"OriginalMaxAge": 30000,
"hanya http": BENAR,
"jalur": "/"
},
"diotentikasi": BENAR,
"pengguna": {
"nama belakang": "Kingsley",
"kata sandi": "123"
}
}
Dengan kode ini, dua hal telah terjadi. Pertama, Anda telah mengautentikasi di server. Kedua, sesi sekarang memiliki detail login Anda, sehingga server sekarang mengetahui siapa Anda. Setiap kali Anda mengirim permintaan baru, itu akan mengingat Anda sampai sesi berakhir dan server menghapusnya.
Sesi Meningkatkan Pengalaman Pengguna
Sesi adalah bagian penting dari aplikasi Node.js. Ini karena mereka memungkinkan Anda mempertahankan keadaan interaksi di banyak permintaan dan tanggapan. Sesi sangat penting untuk aplikasi yang mengharuskan Anda masuk.
Gunakan sesi di aplikasi backend Anda untuk melacak data khusus pengguna. Contoh dari data tersebut adalah item yang telah ditambahkan pengguna Anda ke keranjang belanja.
Tanpa sesi, Anda harus mempertahankan penyimpanan data terpisah untuk setiap pengguna di aplikasi Anda. Ini akan menjadi tidak efisien dan meningkatkan kompleksitas aplikasi.
Express.js Menyederhanakan Sesi, Perutean, dan Lainnya
Express.js adalah framework web Node.js paling populer yang saat ini digunakan. Ini menyediakan banyak alat dan pustaka untuk membuat aplikasi backend, dan pustaka sesi ekspres hanyalah salah satunya.
Jika Anda ingin menggunakan Node.js untuk pengembangan web backend, lihat Express.