Genel Bakış
Express.js, kullanıcının tarayıcısında bir oturum kimliğini (şifreleme imzasıyla) saklamak için bir çerez kullanır ve daha sonra, sonraki isteklerde, sunucuda depolanan oturum bilgilerini almak için bu çerezin değerini kullanır. Bu sunucu tarafı depolama, bir bellek deposu (varsayılan) veya gerekli yöntemleri uygulayan başka herhangi bir depo ( connect-redis gibi ) olabilir.
Detaylar
Express.js / Connect, kullanarak 24 karakterlik bir Base64 dizesi oluşturur utils.uid(24)
ve içinde saklar req.sessionID
. Bu dize daha sonra bir tanımlama bilgisindeki değer olarak kullanılır.
İstemci Tarafı
İmzalı çerezler her zaman oturumlar için kullanılır, bu nedenle çerez değeri aşağıdaki biçime sahip olacaktır.
[sid].[signature]
Burada [sid], oturum kimliği ve [imza], oturum ara yazılımı başlatılırken sağlanan gizli anahtar kullanılarak [sid] imzalanarak oluşturulur. İmzalama adımı, kurcalanmayı önlemek için yapılır. Kullanılan gizli anahtar bilgisi olmadan [sid] 'yi değiştirmek ve ardından [imza]' yı yeniden oluşturmak sayısal olarak olanaksız olmalıdır. [Sid] 'de herhangi bir değişiklik gerekmiyorsa, oturum tanımlama bilgisi hırsızlığa ve yeniden kullanıma karşı hala savunmasızdır.
Bu çerezin adı
connect.sid
Sunucu Tarafı
cookieParser
Ve session
ara yazılımdan sonra bir işleyici ortaya çıkarsa , değişkene erişimi olacaktır req.cookies
. Bu, anahtarları çerez anahtarları ve değerleri çerez değerleri olan bir JSON nesnesi içerir. Bu, adlandırılmış bir anahtar içerecek connect.sid
ve değeri imzalı oturum tanımlayıcısı olacaktır.
Her istekte oturum tanımlama bilgisinin varlığını kontrol edecek ve değerini konsola yazdıracak bir yolun nasıl ayarlanacağına dair bir örnek aşağıda verilmiştir.
app.get("/*", function(req, res, next) {
if(typeof req.cookies['connect.sid'] !== 'undefined') {
console.log(req.cookies['connect.sid']);
}
next();
});
Yönlendiricinin ( app.use(app.router)
) yapılandırma bölümünüze cookieParser
ve sonrasına dahil edildiğinden de emin olmanız gerekir session
.
Aşağıda, Express.js / Connect tarafından dahili olarak depolanan verilere bir örnek verilmiştir.
{
"lastAccess": 1343846924959,
"cookie": {
"originalMaxAge": 172800000,
"expires": "2012-08-03T18:48:45.144Z",
"httpOnly": true,
"path": "/"
},
"user": {
"name":"waylon",
"status":"pro"
}
}
user
Alan bir gelenektir. Geri kalan her şey oturum yönetiminin bir parçasıdır.
Örnek, Express 2.5'ten alınmıştır.