Express.js ile JWT Kimlik Doğrulama Rehberi

Express.js ile JWT Kimlik Doğrulama Rehberi


Günümüzde web uygulamaları, kullanıcıların kimlik doğrulama süreçlerini yönetmek için giderek daha karmaşık hale gelmektedir. Bu bağlamda, JSON Web Tokens (JWT), kullanıcı kimliğini doğrulamak için yaygın olarak kullanılan bir standarttır. Bu makalede, Express.js framework'ü kullanarak JWT ile kimlik doğrulama sürecini tam anlamıyla inceleyeceğiz.

JWT Nedir ve Neden Kullanılır?

JWT (JSON Web Token), kullanıcının kimliğini doğrulamak için kullanılan bir güvenlik standardıdır. Temel olarak, bir kullanıcı giriş yaptığında, sunucu tarafından oluşturulan bir token alır. Bu token, kullanıcı bilgilerini ve belirli bir süre içinde geçerli olduğunu doğrulayan bir imzayı içerir. JWT, istemci ve sunucu arasında güvenli bir şekilde bilgi alışverişi yapmayı sağlarken, geleneksel oturum tabanlı kimlik doğrulama yöntemlerine göre daha ölçeklenebilir bir çözüm sunar.

Express.js Projesinde JWT Uygulaması

Kurulum

Öncelikle, Express.js projemizde gerekli olan paketleri yüklememiz gerekiyor. Aşağıdaki komutları terminalde çalıştırarak projenizi oluşturun ve gerekli paketleri yükleyin:

mkdir jwt-demo
cd jwt-demo
npm init -y
npm install express jsonwebtoken dotenv

JWT Oluşturma ve Doğrulama

JWT'nin oluşturulması ve doğrulanması için aşağıdaki örnek kodu kullanabiliriz. Bu kod, kullanıcıların giriş yapması durumunda bir token oluşturacak ve gelen token'ın geçerliliğini kontrol edecektir.

const express = require('express');
const jwt = require('jsonwebtoken');
const dotenv = require('dotenv');

dotenv.config();

const app = express();
app.use(express.json());

// Basit bir kullanıcı verisi (gerçek bir uygulamada veritabanı kullanılmalıdır)
const users = [{ id: 1, username: 'user', password: 'password' }];

// Giriş yapma endpointi
app.post('/login', (req, res) => {
  const { username, password } = req.body;
  const user = users.find(u => u.username === username && u.password === password);

  if (user) {
    const token = jwt.sign({ id: user.id }, process.env.JWT_SECRET, { expiresIn: '1h' });
    return res.json({ token });
  }
  res.status(401).send('Kullanıcı adı veya şifre yanlış.');
});

// Korunan bir route
app.get('/protected', (req, res) => {
  const token = req.headers['authorization']?.split(' ')[1];

  if (!token) return res.status(403).send('Token gereklidir.');

  jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
    if (err) return res.status(403).send('Geçersiz token.');
    res.send('Korunan veri: ' + user.id);
  });
});

app.listen(3000, () => {
  console.log('Sunucu 3000 portunda çalışıyor.');
});

Sonuç

JWT kullanarak kimlik doğrulama, modern web uygulamalarının önemli bir parçasıdır. Express.js ile entegre edildiğinde, bu süreç hem kullanıcı deneyimini geliştirir hem de uygulamanızın güvenliğini artırır. Bu makalede ele aldığımız temel adımlarla, JWT kullanarak kendi kimlik doğrulama sisteminizi hızlı ve etkili bir şekilde kurabilirsiniz.