Expressjs, kullanıcı oturumlarının yönetimini kolaylaştırır ve hızlı bir şekilde yapılmasını sağlar Oturum yönetimi modülleri arasında en yaygın ve kullanışlı olanı express-session, cookie-session ve express-cookies'tir Oturum bilgilerinin turuncu konserve formatında saklanması ve hash kullanarak şifreleme yapılması önerilir Middleware kullanarak rota koruma ve yetkilendirme işlemleri kolayca gerçekleştirilebilir Veritabanı bağlantısı için Mongoose modülü kullanılır Veritabanı işlemleri için temel fonksiyonlar Modelcreate, Modelfind, ModelupdateOne ve ModeldeleteOne fonksiyonlarıdır

Express.js, kullanıcıların oturum bilgilerini hızlı ve güvenli bir şekilde yönetmenizi sağlayacak birçok seçenek sunuyor. Kullanıcı girişi yaparken, kullanıcının kimlik bilgilerini doğrularken veya oturum açtıklarında oturumlarının ne kadar süreceğini belirlerken Express.js'teki oturum yönetimi nasıl yapılır?
Birçok oturum yönetimi modülü olsa da, Express.js'teki oturum yönetimi modülü en yaygın ve kullanışlıdır.Orta yazılım olarak, Express.js oturum yönetimini cookies ve client-side session storage olarak kullanabilir. Client-side storage, oturumun kullanıcının tarayıcısında saklandığı anlamına gelir. Cookie tabanlı sessions ise, özel metin dosyaları olarak kullanıcı tarayıcısında saklanır. Hangi yöntemin kullanılacağına karar vermek, kullanıcının ihtiyaçlarına ve projenizin gereksinimlerine bağlıdır.
Oturum bilgisi yönetimi sırasında, bilgileri turuncu konserve (JSON) veri formatında saklamanız önerilir. Bu veri formatı, verilerin taşınması ve saklanması için oldukça esnek ve güvenlidir. Oturum bilgilerinin güvenli bir şekilde sıhhatlenmesi için hash kullanarak şifreleme yapmak da mümkündür.
Express.js ile oturum yönetimi için kullanabileceğiniz birçok modül var. Bunlar arasında en yaygın olanları express-session, cookie-session ve express-cookies gib modüllerdir. Her birinin kullanımı ve seçimi ise proje ihtiyaçlarına ve kullanım amacınıza bağlı olarak değişebilir.
Login ve Oturum Yönetimi
Express.js ile oturum yönetimi oldukça kolay ve güvenlidir. İlk olarak, express-session modülü kullanarak bir oturum oluşturun. Bu modül, oturum bilgilerini veritabanında depolamak yerine çerez olarak saklar ve bu sayede oturum yönetimi daha hızlı ve güvenli hale gelir.
Örnek olarak, kullanıcının oturumunu başlatmak ve oturum bilgilerini saklamak için aşağıdaki kodları kullanabilirsiniz:
app.use(session({ secret: 'güvenli bir şifre', resave: false, saveUninitialized: true, cookie: { secure: true }}));
Bu kod, oturum bilgileri için şifreleme yapıldığını, oturumun her istekte yeniden oluşturulmadığını, kullanıcının oturum bilgileri olmadan da erişebilmesini sağladığını ve çerezlerin sadece güvenli bağlantılarda kullanıldığını belirtir.
Ayrıca, kullanıcının giriş yapması için bir form oluşturabilir ve form gönderildiğinde oturum verilerini kontrol ederek kullanıcının kimliğini doğrulayabilirsiniz. Bunun için express-validator modülünü kullanabilirsiniz. Örnek kod aşağıdaki gibi olabilir:
app.post('/giris', [ check('kullaniciAdi').isLength({ min: 3 }).withMessage('Kullanıcı adı en az 3 karakter olmalıdır.'), check('sifre').isLength({ min: 5 }).withMessage('Şifre en az 5 karakter olmalıdır.')], function(req, res) { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(422).json({ errors: errors.array() }); } if(req.body.kullaniciAdi === 'admin' && req.body.sifre === '12345') { req.session.user = { username: 'admin' }; res.redirect('/dashboard'); } else { res.redirect('/giris'); }});
Bu kod, kullanıcının giriş bilgilerini kontrol eder ve doğrulanırsa oturum bilgilerine kullanıcı adını kaydeder ve yönlendirme yaparak dashboard sayfasına gitmesini sağlar. Aksi takdirde, kullanıcıyı giriş sayfasına geri yönlendirir.
Rota Koruma ve Yetkilendirme
Rota koruma ve yetkilendirme, Express.js uygulamasının güvenliğini sağlamanın en temel yollarından biridir. Kullanıcıların yetkisiz erişimini engellemek için, çeşitli yöntemler kullanılabilir. Örneğin, bazı sayfaları sadece belirli bir kullanıcı rolüne sahip kişilerin erişmesine izin verilebilir ya da kullanıcının giriş yapması gerektiği kontrol edilebilir.
Express.js, bu işlemlerin yapılması için birçok seçenek sunar. Bunlardan en yaygın olanı, middleware kullanarak rota koruması yapmaktır. Middleware, uygulamanın herhangi bir yoluna istek yapılmasından önce araya giren bir tür programdır. Bu program, isteği belirli kriterlere göre kontrol eder ve teyit edildiği takdirde isteği kabul eder.
Bunun yanı sıra, Express.js'te yetkilendirme işlemleri de oldukça kolaydır. Örneğin, kullanıcının kimlik doğrulama sürecini tamamlaması için bir kullanıcı adı ve şifre gerektirebilirsiniz. Bu işlem de, middleware kullanarak gerçekleştirilebilir.
Yetkilendirme ve rota koruma işlemlerinin çoğu, Express.js tarafından sağlanan hazır çözümlerle kolayca yapılabilmektedir. Ancak, uygulamanın amacına ve karmaşıklık seviyesine göre farklı yaklaşımlar da gerekebilir. Bu nedenle, bu işlemleri gerçekleştirirken dikkatli olunmalı ve güvenliği her zaman en öncelikli konu olarak ele alınmalıdır.
Veritabanı Bağlantısı
Veritabanı bağlantısı, Express.js uygulamalarının temel bir özelliğidir. Veritabanlarıyla etkileşim kurmak için Express.js, MongoDB, MySQL, PostgreSQL ve SQL Server gibi veritabanı yöneticilerini destekler. Bu başlıktaki içerikte, MongoDB üzerinden JavaScript kullanarak nasıl veritabanı bağlantısı yapılacağı ve veritabanı işlemlerinin nasıl gerçekleştirileceği anlatılacaktır.
Veritabanına bağlanmak için MongoDB, Mongoose adlı bir modül sağlar. Mongoose, MongoDB işlemlerinin JavaScript nesneleri üzerinden yapılmasına olanak tanır. Veritabanı bağlantısı için, Mongoose modülü kullanılmalıdır.
Bağlantı kurulacak MongoDB veritabanı,
mongodb://localhost:27017/myappşeklindeki bir URL ile belirtilir. Bağlantı kurulmak için
mongoose.connect()fonksiyonu kullanılır. Bağlantı kurulduktan sonra, Mongoose modülü, MongoDB veritabanındaki belirli bir koleksiyona erişmek için bir Model oluşturur. Model, belirli bir veri yapısının MongoDB veritabanındaki koleksiyonda nasıl depolanacağını ve sorgulanacağını tanımlar. İşlem,
mongoose.model()fonksiyonu kullanılarak gerçekleştirilir.
Veritabanı işlemleri yapmak için kullanılan temel fonksiyonlar şunlardır:
- Model.create(): Belirtilen Model adıyla yeni bir belge ekler
- Model.find(): Belirtilen arama kriterlerine uygun belgeleri döndürür
- Model.updateOne(): Belirtilen arama kriterlerine göre bir belgeyi günceller
- Model.deleteOne(): Belirtilen arama kriterlerine göre bir belgeyi siler
Veritabanı işlemleri yapmadan önce, bağlantı açılıp işlemler yapıldıktan sonra bağlantının kapatılması gerektiğini unutmamalısınız. Bağlantıyı kapatmak için,
mongoose.connection.close()fonksiyonu kullanılabilir.
Test Otomasyonu
Test otomasyonu, Express.js uygulamasının güvenliği ve kalitesi için oldukça önemlidir. Bu nedenle otomatik testler oluşturmak, geliştirme sürecinde önemli bir yer tutar. JavaScript ile Express.js uygulamaları için test otomasyonu, Mocha ve Chai gibi popüler test araçları kullanılarak gerçekleştirilir.
Mocha, JavaScript ile uygulama test etmek için bir test çerçevesi olarak hizmet verir. Testler, describe() ve it() fonksiyonları kullanılarak yazıldığından, testin hangi özelliği veya işlevi kontrol ettiği kolaylıkla anlaşılabilir.
Chai ise testlerin daha açıklayıcı hale gelmesini sağlayan bir asserter kütüphanesidir. Bu kütüphane, testlerde kullanılan beklenen değerlerin ve gerçek değerlerin karşılaştırılmasını kolaylaştırır.
Bir Express.js uygulaması için otomatik testler oluşturmak, her rotanın ayrı ayrı test edilmesini gerektirir. Bu testler, HTTP istekleri göndererek rotaların yanıt verme durumlarını kontrol eder. Testler için ayrı bir veritabanı kullanmak, gerçek verilerin etkilenmesini önler. Ayrıca tarafınızdan oluşturulmuş test verileri, sadece test sürecinde kullanılır ve gerçek veriler ile karışmaz.