Node.js cookie Yönetimi

Yazıda cookie hakkında bilgi verildikten sonra express ile cookie yönetimi ve kullanımı ile ilgili bilgiler yer almaktadır.

Cookie veya çerez dinamik web uygulamalarında kullanıcı tarayıcısında, kullanıcı bilgilerini saklamak için kullanılan dosyalardır.

Çerezler bir web sunucusuna bağlanıldığında sunucu tarafından kullanıcıya cevap olarak (response) gönderilir.

Node.js ile oluşturulan HTTP sunucusu cevap parametresi, Set-Cookie değerine çerez bilgileri yazılarak kullanıcının tarayıcısında çerez oluşturulabilir.

'use strict';

const http = require('http');

const sunucu = http.createServer(function (req, res) {

  res.writeHead(200, {
    'Content-type': 'text/html; charset=utf-8',
    'Set-Cookie': 'adiSoyadi=Yusuf SEZER'
  });

  res.end('Çerez oluşturuldu');

});

sunucu.listen(1453, function () {
  console.log('Sunucu başlatıldı...');
});

Ayrıca express modülü cevap (response) nesnesi içerisinde bulunan cookie metodu ile çerez oluşturulabilir.

res.cookie(name, value [, options]);

Metot oluşturulacak çerez hakkında çeşitli bilgileri parametre olarak alır.

Ancak sadece çerez adı, çerez değeri ve sonlanma tarihinin kullanılması yeterli olacaktır.

'use strict';

const express = require('express');
const app = express();

app.get('/', function (req, res) {

  res.cookie('adiSoyadi', 'Yusuf SEZER', {
    expires: new Date(Date.now() + 5 * 100000)
  });

  res.send('Çerez oluşturuldu.');

});

app.listen(1453, function () {
  console.log('Sunucu çalışıyor...');
});

Oluşturulan çerez ile ilgili bilgi kullanıcı tarafından sunucuya gönderilen istek parametresi headers nesnesi içerisindeki cookie nesnesinde yer alır.

'use strict';

const express = require('express');
const app = express();

app.get('/', function (req, res) {

  res.cookie('adiSoyadi', 'Yusuf SEZER', {
    expires: new Date(Date.now() + 5 * 100000)
  });

  res.send('Çerez oluşturuldu. <a href="/oku">Çerez içeriğine bak.</a>');

});


app.get('/oku', function (req, res) {
  res.send('Çerez bilgisi: ' + req.headers.cookie);
});

app.listen(1453, function () {
  console.log('Sunucu çalışıyor...');
});

Express ile çerez bilgilerini almak için cookie-parser ara katmanı kullanılabilir.

Modül Node.js connect Modülü ve Middleware yazısı Orta katman modülü yazmak başlığındaki gibi istek parametresine çeşitli eklemeler yaparak çerezlerin okunmasını kolaylaştırır.

Modülü indirmek için

npm install cookie-parser --save

komutu kullanılır.

Modül projeye dahil edilir ve express orta katmanına eklenerek kullanılır.

'use strict';

const express = require('express');
const app = express();
const cookieParser = require('cookie-parser');

app.use(cookieParser());

app.get('/', function (req, res) {

  res.cookie('adiSoyadi', 'Yusuf SEZER', {
    expires: new Date(Date.now() + 5 * 100000)
  });

  res.send('Çerez oluşturuldu. <a href="/oku">Çerez içeriğine bak.</a>');

});

app.get('/oku', function (req, res) {
  res.send('Çerez bilgisi: ' + req.cookies.adiSoyadi);
});

app.listen(1453, function () {
  console.log('Sunucu çalışıyor...');
});

Oluşturulan çerezi silmek için cevap parametresine ait clearCookie metodu kullanılır.

'use strict';

const express = require('express');
const app = express();
const cookieParser = require('cookie-parser');

app.use(cookieParser());

app.get('/', function (req, res) {

  res.cookie('adiSoyadi', 'Yusuf SEZER', {
    expires: new Date(Date.now() + 5 * 100000)
  });

  res.send('Çerez oluşturuldu. <a href="/oku">Çerez içeriğine bak.</a>');

});

app.get('/oku', function (req, res) {
  res.send('Çerez bilgisi: ' + req.cookies.adiSoyadi + ' <a href="/sil">Çerezi sil.</a>');
});

app.get('/sil', function (req, res) {

  res.clearCookie('adiSoyadi');
  res.send('Çerez silindi.');

});

app.listen(1453, function () {
  console.log('Sunucu çalışıyor...');
});

Çerez kullanıcı bilgilerini tutmak için kullanılan bir yöntem olsa da pek güvenli değildir.

Güvenliğin önemli olduğu uygulamalarda session, token gibi yöntemlerin kullanılması faydalı olacaktır.

Node.js Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!