Yetkilendirme İşlemleri Express.js’te Kullanıcı Rollerine Göre – JsonWebToken Kullanımı

Posted by

Express.js’te Kullanıcı Rollerine Göre Yetkilendirme

Express.js’te Kullanıcı Rollerine Göre Yetkilendirme

Express.js’te kullanıcı rollerine göre yetkilendirme yapmak oldukça önemlidir. Bu sayede sistem içindeki farklı kullanıcı gruplarına özel izinler verilmesi ve güvenlik sağlanması mümkün olur. Bir kullanıcı belirli bir rolde ise, o kullanıcının sadece o role ait olan işlemleri yapabilmesi sağlanabilir.

JsonWebToken Kullanımı

Express.js’te kullanıcı rollerine göre yetkilendirme yapmak için genellikle JsonWebToken (JWT) kullanılır. Bu token tabanlı kimlik doğrulama ve yetkilendirme yöntemi, web uygulamalarında kullanıcıları doğrulamak için etkili bir yöntemdir. Kullanıcı giriş yaparken bir JWT oluşturulur ve bu token her istekle birlikte sunucuya gönderilir. Sunucu bu tokenı doğrulayarak kullanıcının kimliğini ve rollerini kontrol eder.

Nasıl Kullanılır?

Express.js uygulamasında JWT kullanarak kullanıcı rollerine göre yetkilendirme yapmak için öncelikle jwt-simple gibi bir JWT kütüphanesini projenize eklemelisiniz. Ardından kullanıcı login işlemi gerçekleştiğinde bir token oluşturup response olarak geri döndürmelisiniz. Bu token, kullanıcının kimlik doğrulaması için kullanılacaktır.

    
const jwt = require('jwt-simple');
const secret = 's3cr3tK3y';

function login(req, res) {
  // Kullanıcı kimlik doğrulaması yap
  // Kullanıcı rolünü kontrol et
  // Token oluştur
  const payload = {
    role: 'admin',
    // Diğer kullanıcı bilgileri
  };
  const token = jwt.encode(payload, secret);
  res.json({ token });
}
    
  

Her istekle birlikte bu tokenı sunucuya göndererek kullanıcıyı doğrulayabilirsiniz. Token doğrulamasını bir middleware olarak ekleyerek her istek öncesi tokenın geçerliliğini kontrol edebilir ve kullanıcının rolüne göre işlem yapmasını sağlayabilirsiniz.

    
function ensureAuthenticated(req, res, next) {
  const token = req.headers.authorization;
  try {
    const decoded = jwt.decode(token, secret);
    if (decoded.role !== 'admin') {
      res.sendStatus(403); // Yetkisiz erişim
    } else {
      next(); // İşlem devam eder
    }
  } catch (error) {
    res.sendStatus(401); // Geçersiz token
  }
}

app.get('/admin/dashboard', ensureAuthenticated, (req, res) => {
  res.send('Admin Dashboard'); // Sadece admin rolüne sahip kullanıcılar erişebilir
});
    
  

Bu şekilde Express.js kullanarak JsonWebToken ve kullanıcı rollerine göre yetkilendirme yapabilirsiniz. Bu sayede uygulamanızda güvenlik sağlayabilir ve farklı kullanıcı gruplarına özel yetkilendirmeler yapabilirsiniz.