Expressjs‘de Kullanıcı Yönetimi
Kullanıcı yönetimi, bir web uygulamasında kullanıcıların kimlik doğrulamasını, oturum açmayı, yetkilendirilmiş sayfalara erişimi ve genel olarak kullanıcıların yapabileceği işlemleri belirlemekte kullanılır.
import express from "express";
import passport from "passport";
import { Strategy as LocalStrategy } from "passport-local";
const app = express();
// Kullanıcı veritabanı
const users = [
{ id: 1, username: 'selim', password: 'selim123' }
];
// Passport konfigürasyonu
passport.use(new LocalStrategy(
async (username, password, done) => {
try {
// Kullanıcıyı veritabanından bul
const user = users.find(user => user.username === username);
// Kullanıcı bulunamazsa veya parola uyuşmazsa
if (!user || user.password !== password) {
return done(null, false, { message: 'Kullanıcı adı veya parola yanlış' });
}
// Kimlik doğrulama başarılı
return done(null, user);
} catch (error) {
return done(error);
}
}
));
// Oturum yönetimi için serialize/deserialize işlemleri
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
const user = users.find(user => user.id === id);
done(null, user);
});
// Middleware olarak Passport kullanımı
app.use(passport.initialize());
app.use(passport.session());
// Giriş rotası
app.post('/login', passport.authenticate('local', {
successRedirect: '/profile',
failureRedirect: '/login',
failureFlash: true
}));
// Kullanıcı profili rotası (örneğin sadece oturumu açık olan kullanıcılar erişebilir)
app.get('/profile', isAuthenticated, (req, res) => {
res.send('Profil sayfası');
});
// Oturum kontrolü
function isAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/login');
}
// Sunucuyu dinleme
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Yukarıdaki örnekte , passport ve passport-local paketleri kullanılarak temel kullanıcı yönetim işlemi yaptık.Kullanıcılar, kullanıcı adları ve şifreleri gibi kimlik bilgileriyle sisteme kaydedilir, oturum açma işlemi gerçekleştirilir ve yetkilendirilmiş sayfalara erişim sağlar.
Yukarıdaki örnekteki işlemlerin açıklaması
Express Uygulaması Oluşturma: İlk adım olarak bir Express uygulaması oluşturuyoruz. Temel bir HTTP sunucusunu başlatmak için kullanacağımız bir platform sağlar.
import express from "express";
const app = express();
passport ve passport-local Kullanımı: passport ve passport-local paketlerini uygulamamıza dahil ediyoruz. passport paketi, kimlik doğrulama ve yetkilendirme için çerçeve sağlar, passport-local ise yerel kullanıcı kimlik doğrulaması için kullanacağız.
import passport from "passport";
import { Strategy as LocalStrategy } from "passport-local";
Kullanıcı Veritabanı: Kullanıcıları verilerini saklamak için basit bir dizi oluşturuyoruz( DB bağlantımız olmadığı için ). Bu örnekte, kullanıcı adı ve şifrelerini tutuyoruz.
const users = [
{ id: 1, username: 'selim', password: 'selim123' }
];
Passport Konfigürasyonu: Passport kullanarak yerel kimlik doğrulama stratejisini oluşturuyoruz.. Bu strateji de, kullanıcı adı ve şifreyi alır, veritabanında arar ve eşleşen bir kullanıcı bulursa kimlik doğrulamasını başarılı kabul eder.
passport.use(new LocalStrategy(
async (username, password, done) => {
try {
const user = users.find(user => user.username === username);
if (!user || user.password !== password) {
return done(null, false, { message: 'Kullanıcı adı veya parola yanlış' });
}
return done(null, user);
} catch (error) {
return done(error);
}
}
));
Oturum Yönetimi: Oturum yönetimi için passport.serializeUser ve passport.deserializeUser fonksiyonlarını tanımlıyoruz. Bu fonksiyonlar, kullanıcı kimliğini oturum verisine serialize ve deserialize etmek için kullanacağız.
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
const user = users.find(user => user.id === id);
done(null, user);
});
Middleware Olarak Passport Kullanımı: Express uygulamasına Passport orta katmanını ekliyoruz. Bu, kimlik doğrulama işlemlerinin Express’in diğer middlewareleriyle iletişimi sağlayacaktır.
app.use(passport.initialize());
app.use(passport.session());
Korunan Rotalar ve Oturum Kontrolü: Kullanıcıların erişim izni gerektiren rotalara erişimini kontrol etmek için bir oturum kontrolü işlevi tanımlıyoruz.
function isAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/login');
}
Sunucu Başlatma: Son olarakta , Express uygulamasını belirli bir portta dinlemek için bir HTTP sunucusu başlatıyoruz.
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Bu adımlarla, Expressjs kullanarak passport ve passport-local paketlerini kullanarak basit bir kimlik doğrulama ve oturum yönetimi işlemini gerçekleştirdik.Bu yöntem, kullanıcıların giriş yapmasını ve uygulamanın belirli bölümlerine erişmelerine izin verir.
Okuduğunuz için teşekkürler
- 👏 Beğendiyseniz alkışlayın ve beni takip edin 👉
- 📰 Daha fazla içerik görüntülemek için tıklayın
- 🔔 Beni takip edin: LinkedIn!
Her zaman gelişmek için yer olduğunu anlıyorum. Lütfen düşüncelerinizi paylaşmaktan çekinmeyin.