,

Express JS and Sequelize Tutorial: Creating a REST API for User Login and JWT Token Generation

Posted by

REST API TUTORIAL DENGAN EXPRESS JS DAN SEQUELIZE – LOGIN DAN GENERATE JWT TOKEN

REST API TUTORIAL DENGAN EXPRESS JS DAN SEQUELIZE – LOGIN DAN GENERATE JWT TOKEN

Selamat datang di tutorial ini. Pada tutorial ini, kita akan belajar tentang bagaimana membuat REST API menggunakan Express JS dan Sequelize untuk melakukan proses login dan generate JWT token.

Langkah pertama yang perlu dilakukan adalah membuat endpoint untuk proses login. Endpoint ini akan menerima permintaan dari user untuk login dan akan melakukan validasi username dan password menggunakan Sequelize.

Berikut adalah contoh kode untuk membuat endpoint login:


app.post('/login', (req, res) => {
  const { username, password } = req.body;

  User.findOne({ where: { username: username } })
    .then(user => {
      if (!user) {
        res.status(401).json({ message: 'Invalid username or password' });
      } else {
        bcrypt.compare(password, user.password, (err, result) => {
          if (result) {
            const token = jwt.sign({ username: user.username, id: user.id }, 'secret_key', { expiresIn: '1h' });
            res.status(200).json({ token: token });
          } else {
            res.status(401).json({ message: 'Invalid username or password' });
          }
        });
      }
    })
    .catch(err => {
      res.status(500).json({ message: 'Internal server error' });
    });
});

Pada contoh kode di atas, kita menggunakan model User yang telah kita buat menggunakan Sequelize untuk mencari user berdasarkan username. Setelah mendapatkan user, kita akan membandingkan password yang diinput oleh user dengan password yang tersimpan di database menggunakan bcrypt. Jika password sesuai, kita akan generate JWT token menggunakan library jsonwebtoken.

Setelah berhasil login, user dapat menggunakan token tersebut untuk mengakses endpoint lain yang membutuhkan autentikasi. Berikut adalah contoh kode untuk membuat middleware yang akan memeriksa keberadaan token dan mengekstrak data user dari token:


const checkAuth = (req, res, next) => {
  const token = req.headers.authorization.split(' ')[1];
  jwt.verify(token, 'secret_key', (err, decoded) => {
    if (err) {
      return res.status(401).json({ message: 'Invalid token' });
    }
    req.userData = decoded;
    next();
  });
};

Setelah middleware tersebut dibuat, kita dapat menggunakannya pada endpoint-endpoint yang memerlukan autentikasi dengan cara menambahkan middleware checkAuth sebagai parameter kedua pada method app.use().

Dengan menggunakan Express JS dan Sequelize, kita bisa dengan mudah membuat REST API yang dapat melakukan proses login dan generate JWT token. Semoga tutorial ini bermanfaat untuk Anda dalam mempelajari pengembangan aplikasi web.