SORU
2 NİSAN 2011, CUMARTESİ


Nasıl seansları Node.js ile Express.js çalışmak mı?

Express.js, oturumları kullanarak ölü basittir. Onlar aslında ama nasıl çalıştığını merak ediyorum.

İstemci kurabiye muhafaza ediyor? Eğer öyleyse, nerede bu kurabiye bulabilirim? Gerekirse, bu şifreyi nasıl kıracağız?

Aslında ben de öyle olmak istiyorum mümkün olup olmadığını görmek için bir kullanıcı oturum bile, kullanıcı değil aslında sitesinde (facebook gibi nasıl bilir misin açmış olduğun zaman diğer siteler). Ama ilk seans nasıl çalıştığını anlamak gerekir anlamak için sanırım.

CEVAP
20 Temmuz 2012, Cuma


Genel bakış

Express.js kullanan bir çerez saklamak için bir oturum kimliği (bir şifreleme imza) kullanıcının web tarayıcısı ve daha sonra, sonraki istekleri, kullanır değeri kurabiye almak için oturum bilgilerini depolanan sunucu. Bu bir sunucu tarafı depolama hafıza deposu (varsayılan) veya gerekli yöntemleri uygulayan başka bir mağaza (connect-redis gibi) olabilir.

Ayrıntılar

Express.js/req.sessionID 24 karakter Base64 dize utils.uid(24) ve depolar oluşturur Bağlayın. Bu dize daha sonra bir çerez değeri olarak kullanılır.

İstemci Tarafı

İmzalı çerezleri her zaman oturumları için kullanılır, cookie değerini aşağıdaki biçimde olacaktır.

[sid].[signature]

[Sid] sessionıd nerede olduğunu ve [imza] imza [sid] gizli anahtarı katman oturumu başlatırken sağlanan kullanarak oluşturulur. İmza adım oynanmasını önlemek için yapılır. [Sid] olarak değiştirme ve [imza] gizli anahtar kullanılır bilgisi olmadan yeniden hesaplama infeasable olmalıdır. Oturum tanımlama [sid] hiçbir değişiklik gerekli ise hala hırsızlık ve yeniden savunmasız.

Bu tanımlama bilgisi adıdır

connect.sid

Sunucu Tarafı

Eğer bir işleyici cookieParser session katman sonra oluşursa 10* *değişken erişecek. Bu anahtarları ve değerleri cookie değerleri tanımlama bilgisi olan JSON bir nesne içerir. Bu bir anahtar connect.sid adlı içerir ve değerini imzalı oturum kimliği olacak.

İşte oturum varlığı için her istek üzerine kurabiye kontrol edecek ve değerini konsola yazdırma bir rota ayarlamak için nasıl bir örnek.

app.get("/*", function(req, res, next) {

    if(typeof req.cookies['connect.sid'] !== 'undefined') {
        console.log(req.cookies['connect.sid']);
    }

    next(); // Call the next middleware
});

Ayrıca yönlendirici (app.use(app.router)) yapılandırma bölümünde cookieParser session sonra dahil olduğundan emin olun gerekir.

Aşağıdaki verileri içten Express tarafından depolanan bir örnektir.js/Bağlayın.

{
  "lastAccess": 1343846924959,
  "cookie": {
    "originalMaxAge": 172800000,
    "expires": "2012-08-03T18:48:45.144Z",
    "httpOnly": true,
    "path": "/"
  },
  "user": { 
    "name":"waylon",
    "status":"pro"
  }
}

user alanında özel. Her şey oturum yönetimi bir parçasıdır.

Örnek İfade 2.5.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ecf150king

    ecf150king

    20 Ocak 2006
  • SHAYTARDS

    SHAYTARDS

    1 EKİM 2008
  • TomKNJ

    TomKNJ

    26 ŞUBAT 2007