Cara menggunakan mysql router configuration password

Beberapa saat yang lalu saya telah menulis artikel tentang membuat website statis menggunakan Node.js dengan memanfaatkan framework Express.js. Pada artikel kali ini saya akan menulis tentang bagaimana cara membuat sistem login dan register menggunakan Node.js.

Baca Juga : Membuat Website Statis dengan Express.js

Target

Didalam artikel ini kamu akan mempelajari pembuatan sistem login dan register menggunakan Express.js sebagai framework dari Node.js, dan memanfaatkan template engine EJS untuk disajikan di sisi client, serta database MySQL sebagai media penyimpanan datanya.

Memulai

Untuk memulai praktek di artikel ini kamu diharapkan telah mengetahui dasar dari Node.js dan memahami bagaimana cara kerja dari Node.js itu sendiri. Kamu bisa membaca artikel sebelumnya dan melakukan instalasi terhadap beberapa software yang diperlukan.

#1 Membuat Database

Kali ini kita akan menggunakan database dengan nama db_node_login. Didalam database tersebut terdapat satu tabel dengan nama table_user, dan berikut rincian fields yang ada pada tabel tersebut:

Cara menggunakan mysql router configuration password

Hanya ada 4 fields, dan pada field password saya menggunakan tipe data text agar dapat lebih banyak menyimpan string karna nantinya kita akan menggunakan SHA512 untuk melakukan enkripsi.

#2 Buat Project

Tentukan dimana sistem ini akan kamu buat, sebagai contoh saya meletakan pada direktori D:\Learn. Kemudian buat sebuah folder dengan nama nodejs-basic-login.

Lalu buka terminal dan ketik perintah

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
8. Jawab semua pertanyaan yang diajukan melalui terminal, mulai dari name, version, author, hingga lisensi dan ketika selesai kamu akan mendapatkan file package.json.

Masih di terminal yang sama, ketikan perintah untuk menginstall dependensi yang kita perlukan untuk membangun sistem login dan register ini.

npm i express express-session body-parser req-flash mysql ejs

Pada perintah diatas kita menginstall 6 dependensi sekaligus yaitu express sebagai kerangka kerja Node.js, express-session yang dibutuhkan untuk sesi user ketika login, body-parser untuk menghendle input yang dilakukan user, req-flash yang digunakan untuk memberi notifikasi error ataupun sukses, mysql sebagai koneksi sistem ke database, dan terakhir ejs sebagai template engine untuk disajikan ke browser user.

#3 Skeleton

Node.js membebaskan kamu untuk menentukan seperti apa kerangka aplikasi yang diinginkan. Untuk keperluan artikel, agar lebih gampang biasanya penulis menggunakan satu file bernama app.js atau index.js saja. Namun pada artikel ini, saya juga akan memberikan skeleton atau kerangka aplikasi Node.js yang baik dan tersusun agar mudah dimaintenance kedepannya.

Berikut adalah struktur dari sistem login dan register yang akan kita bangun menggunakan Node.js:

Cara menggunakan mysql router configuration password

#4 Ngoding

Pertama-tama mari kita mulai menulis kode dari file terpenting dahulu. Pada direktori root, tepat sejajar dengan folder node_modules, buat sebuah file bernama index.js. File ini akan menjadi file inti atau file induk sekaligus juga merupakan file yang berfungsi untuk menjalankan sistem ini nantinya.

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});

Setiap potongan kode telah saya sertakan komen yang bertujuan untuk menjelaskan fungsi dari potongan kode tersebut.

Pada bagian konfigurasi session kamu dapat melihat angka 60000. Itu merupakan angka dalam satuan milidetik yang apabila di konversi ke satuan menit menjadi 1 menit. Artinya, didalam sistem ini kita menetapkan sesi untuk seorang user login hanya diberi waktu selama 1 menit saja. Kamu bisa mengganti sesuai dengan waktu yang diinginkan.

Selanjutnya buat sebuah file yang digunakan untuk konfigurasi koneksi ke database dengan nama database.js. Letakan file tersebut kedalam folder src/configs sesuai dengan skeleton diatas.

module.exports = {
    multipleStatements  : true,
    host                : 'localhost',
    user                : 'root',
    password            : '',
    database            : 'db_node_login'
};

Kemudian didalam folder yang sama, buat juga file verify.js. File ini berfungsi sebagai middleware yang akan memproteksi pemanggilan controller dari router sebelum dijalankan.

module.exports = {
    isLogin(req, res, next){
        if(req.session.loggedin === true){
            next();
            return;
        } else {
            req.session.destroy(function(err) {
                res.redirect('/login');
            })
        }
    },
    isLogout(req, res, next){
        if(req.session.loggedin !== true){
            next();
            return;
        }
        res.redirect('/');
    }
};

Untuk middleware ini kamu bisa menggunakan library yang telah banyak disediakan pada NPM seperti passport.js yang paling banyak digunakan. Pada kode verify.js diatas saya meletakan 2 fungsi sederhana yang akan melakukan pengecekan apakah user tersebut masih memiliki sesi atau tidak.

Lanjut ke tahap pembuatan rute. Metode ini biasa disebut routing atau perutean terhadap sebuah sistem. Dimana kita akan membuat jalur-jalur apa saja yang tersedia untuk sistem ini ketika dijalankan. Pada sistem kali ini saya akan membagi rute menjadi 3 bagian, yaitu rute register, login, dan app.

Silahkan buat sebuah file bernama router-register.js dan letakan pada folder src/routes. Kemudian ketik kode berikut

// Definisikan router dari express
const router = require('express').Router();
// Ambil index.js dari controller dan panggil variabel didalamnya
const registerController = require('../controllers').register;
// Definisikan middleware verify.js
const verifyUser = require('../configs/verify');

// Rute 'http://localhost:5050/register/' digunakan untuk menampilkan form register
router.get('/', verifyUser.isLogout, registerController.formRegister);
// Rute 'http://localhost:5050/register/save' digunakan untuk menyimpan data yang diinput user saat register
router.post('/save', verifyUser.isLogout, registerController.saveRegister);

// Export agar dapat dibaca oleh express
module.exports = router;

Pada kode diatas telah saya sertakan komen untuk menjelaskan maksud dari potongan kode tersebut. Pada bagian Rute kamu dapat melihat bahwa rute tersebut dilindungi oleh middleware yang memastikan hanya user yang belum login / yang tidak memiliki sesi yang dapat mengakses rute tersebut.

Masih pada folder yang sama, buat file router-login.js dan berikut kode didalamnya

const router = require('express').Router();
const loginController = require('../controllers').login;
const verifyUser = require('../configs/verify');

router.get('/', verifyUser.isLogout, loginController.login);
router.get('/logout', loginController.logout);

router.post('/auth', loginController.loginAuth);

module.exports = router;

Masih pada folder yang sama, buat file router-app.js yang akan kita gunakan untuk mengakses halaman home dan profile

const router = require('express').Router();
const homeController = require('../controllers').home;
const profileController = require('../controllers').profile;
const verifyUser = require('../configs/verify');

router.get('/', verifyUser.isLogin, homeController.home);
router.get('/profile', verifyUser.isLogin, profileController.profile);

module.exports = router;

Pada 3 router diatas kamu dapat perhatikan bahwa setiap router akan memanggil controller berikut dengan fungsi didalamnya. Tentu saja jika kita jalankan akan terjadi error karena belum terdapat file controller sama sekali.

Sekarang silahkan buat file controller dengan nama index.js didalam folder src/controllers.

const login = require('./controller-login');
const register = require('./controller-register');
const home = require('./controller-home');
const profile = require('./controller-profile');

module.exports ={
	login,
	register,
	home,
	profile
};

Dilihat dari kode diatas, saya membagi controller menjadi 4 bagian dan saya tampung kedalam 4 variabel yang dieksport.

...masih pada folder yang sama, buat file bernama controller-register.js dan ketik kode berikut

// Definisikan configurasi Database
const config = require('../configs/database');
// Gunakan library mysql
let mysql      = require('mysql');
// Buat koneksi
let pool       = mysql.createPool(config);

// Kirim error jika koneksi gagal
pool.on('error',(err)=> {
    console.error(err);
});

module.exports ={
    // Fungsi untuk merender file register yang ada pada folder 'src/views/register.ejs'
    formRegister(req,res){
        res.render("register",{
            // Definisikan semua varibel yang ingin ikut dirender kedalam register.ejs
            url : 'http://localhost:5050/',
        });
    },
    // Fungsi untuk menyimpan data
    saveRegister(req,res){
        // Tampung inputan user kedalam varibel username, email dan password
        let username = req.body.username;
        let email = req.body.email;
        let password = req.body.pass;
        // Pastikan semua varibel terisi
        if (username && email && password) {
            // Panggil koneksi dan eksekusi query
            pool.getConnection(function(err, connection) {
                if (err) throw err;
                connection.query(
                    `INSERT INTO table_user (user_name,user_email,user_password) VALUES (?,?,SHA2(?,512));`
                , [username, email, password],function (error, results) {
                    if (error) throw error;
                    // Jika tidak ada error, set library flash untuk menampilkan pesan sukses
                    req.flash('color', 'success');
                    req.flash('status', 'Yes..');
                    req.flash('message', 'Registrasi berhasil');
                    // Kembali kehalaman login
                    res.redirect('/login');
                });
                // Koneksi selesai
                connection.release();
            })
        } else {
            // Kondisi apabila variabel username, email dan password tidak terisi
            res.redirect('/login');
            res.end();
        }
    }
}

Didalamnya telah saya sertakan penjelasn untuk masing-masing potongan kode. Penjelasan tersebut juga berlaku untuk kode yang sama pada controller selanjutnya.

Lalu buat file controller untuk login dengan nama controller-login.js di dalam folder yang sama.

const config = require('../configs/database');

let mysql      = require('mysql');
let pool       = mysql.createPool(config);

pool.on('error',(err)=> {
    console.error(err);
});

module.exports ={
    // Render tampilan untuk login yang ada didalam folder 'src/views/login.ejs'
    login(req,res){
        res.render("login",{
            url : 'http://localhost:5050/',
            // Kirim juga library flash yang telah di set
            colorFlash: req.flash('color'),
            statusFlash: req.flash('status'),
            pesanFlash: req.flash('message'),
        });
    },
    // Post / kirim data yang diinput user
    loginAuth(req,res){
        let email = req.body.email;
        let password = req.body.pass;
        if (email && password) {
            pool.getConnection(function(err, connection) {
                if (err) throw err;
                connection.query(
                    `SELECT * FROM table_user WHERE user_email = ? AND user_password = SHA2(?,512)`
                , [email, password],function (error, results) {
                    if (error) throw error;  
                    if (results.length > 0) {
                        // Jika data ditemukan, set sesi user tersebut menjadi true
                        req.session.loggedin = true;
                        req.session.userid = results[0].user_id;
                        req.session.username = results[0].user_name;
                        res.redirect('/');
                    } else {
                        // Jika data tidak ditemukan, set library flash dengan pesan error yang diinginkan
                        req.flash('color', 'danger');
                        req.flash('status', 'Oops..');
                        req.flash('message', 'Akun tidak ditemukan');
                        res.redirect('/login');
                    }
                });
                connection.release();
            })
        } else {
            res.redirect('/login');
            res.end();
        }
    },
    // Fungsi untuk logout | Cara memanggilnya menggunakan url/rute 'http://localhost:5050/login/logout'
    logout(req,res){
        // Hapus sesi user dari broser
        req.session.destroy((err) => {
            if(err) {
                return console.log(err);
            }
            // Hapus cokie yang masih tertinggal
            res.clearCookie('secretname');
            res.redirect('/login');
        });
    },
}

Selanjutnya buat file controller-home.js masih pada folder yang sama

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
0

Hanya terdapat satu fungsi didalamnya yang digunakan untuk me-render tampilan home.ejs sekaligus membawa data berupa userName yang nanti akan ditampilkan pada browser.

...masih pada folder yang sama, buat file controller-profile.js yang digunakan untuk melihat profile dari user yang login

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
1

Sekarang kita lanjut kebagian desain halaman untuk ditampilkan ke pada user melalui browser. DIsini seperti yang saya jelaskan diawal, kita akan menggunakan template engine EJS, namun kamu tidak perlu khawatir karena kode yang ada didalamnya hampir sama dengan kode HTML. Kamu juga bisa menambahkan css sesuka hati. Untuk artikel ini saya menggunakan bootstrap sebagai framework CSS yang dipanggil melalui CDN.

Langsung saja, pada folder src/views, buat file bernama register.ejs dan ketik kode berikut

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
2

Pada folder yang sama, buat juga file login.ejs

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
3

Perhatikan, diatas terdapat kode logic pesanFlash. Ini digunakan untuk menampilkan respon berupa alert kepada user. Pesan ini telah kita set sebelumnya pada controller.

Selanjutnya buat file home.ejs masih difolder yang sama

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
4

Kode

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
9. digunakan untuk menampilkan varibel yang kita ikut sertakan ketika EJS di render dari controller.

...lalu buat juga file profile.ejs pada folder yang sama, untuk menampilkan profile dari user yang login

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
5

#5 Jalankan

Buka kembali terminal tempat kamu menginstal dependensi pada langkah #2 Buat Project diatas. Kemudian ketik perintah berikut untuk menjalankan

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
6

Cara menggunakan mysql router configuration password

Sekarang buka browser dan arahkan ke url http://localhost:5050/. Secara otomatis kamu akan diarahkan ke halaman login karena tidak memiliki sesi dan rute tersebut dilindungi oleh middleware.

Berikut video demo dari sistem login dan register yang telah kita buat diatas.

Tambahan

Ketika kamu telah logout dari sistem, kemudian menekan tombol back pada browser, browser tetap akan menarahkanmu ke halaman sebelumnya tanpa harus login. Sebenarnya ini disebabkan oleh browser yang menyimpan cache dari setiap halaman yang dikunjunginya. Tapi kamu tidak perlu khawatir karena halaman yang ditampilkan tersebut bukan lah real time melainkan hanya halaman yang telah di cache saja. Sehingga ketika kamu reload atau melakukan aksi apapun, tetap saja akan diarahkan kembali kehalaman login karena rute tersebut dilindungi oleh middleware.

Untuk mengatasi hal tersebut, silahkan tambahkan baris berikut didalam index.js.

// Definisi Library yang digunakan
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const path = require('path');
const flash = require('req-flash');
const app = express();

// Definisi lokasi file router
const loginRoutes = require('./src/routes/router-login');
const registerRoutes = require('./src/routes/router-register');
const appRoutes = require('./src/routes/router-app');

// Configurasi dan gunakan library
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

// Configurasi library session
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 't@1k0ch3ng',
    name: 'secretName',
    cookie: {
        sameSite: true,
        maxAge: 60000
    },
}))
app.use(flash());

// Setting folder views
app.set('views',path.join(__dirname,'src/views'));
app.set('view engine', 'ejs');

// Gunakan routes yang telah didefinisikan
app.use('/login', loginRoutes);
app.use('/register', registerRoutes);
app.use('/', appRoutes);

// Gunakan port server
app.listen(5050, ()=>{
    console.log('Server Berjalan di Port : '+5050);
});
7

Penutup

Pada artike kali ini kamu telah mempelajari bagaimana membuat basic dari login dan register menggunakan Express.js menggunakan sesion. Untuk kamu yang menginginkan source code lengkap dari artikel ini, dapat kamu temukan dan download melalui akun Github saya.