Ekspres 4.0, tek uyarı mesajıyla ekspres oturum


105

Express 4.x kullanarak bir nodejs uygulaması kurmaya çalışıyorum. Ara yazılım kaldırma sorunlarını çözdükten sonra, sonunda onu çalıştırdım.

ancak, aşağıdaki kod satırında birkaç uyarı mesajı vardı:

app.use(session({secret: '<mysecret>'})

bu uyarılar şunlardı:

Sun, 29 Jun 2014 12:45:10 GMT express-session deprecated pass resave option; default value will change at lib\config\express.js:55:11

Sun, 29 Jun 2014 12:45:10 GMT express-session deprecated pass saveUninitialized option; default value will change at lib\config\express.js:55:11

belgelerde, yeniden kaydetme ve kaydetme için varsayılan değerler doğrudur.

yani, okunacak kodu değiştirmek

app.use(session({secret: '<mysecret>', 
                 saveUninitialized: true,
                 resave: true}));

uyarılardan kurtuldu.

Öyleyse, sorunun konusuna gelelim:

bunlar varsayılan değerlerse neden bu değerleri iletmem gerekiyor ve neden diğer seçenekleri geçmek zorunda değilim?


1
çünkü bu varsayılan değerler değişecek ve değiştiklerinde, bunları açıkça ara katman yazılımına aktararak neden olabilecek hataları önleyebilirsiniz
soulcheck

12
Onlar yardımsever varsayılan seçenekler ne söyleyecektir YAPMAYIN nasıl aşk
Brade

4
Hem resaveve saveUnitializedhangi varsayılan mantıksal ifadenin şunlardır true1.7.2 yılında: github.com/expressjs/session
cfs

1
@cfs: Olmalı saveUninitialized. Gönderdiklerinizi kopyaladım ve uyarının nereye gitmediğini anlamaya çalışarak 45 dakika harcadım. Daha sonra bir yazım hatası olduğunu anladım. lol: D
AdityaParab

1
Boşa harcanan zaman için özür dilerim Maverick :) Maalesef, yorum düzenlemek için çok eski, aksi takdirde yazım
hatamı

Yanıtlar:


68

Uyarıların dediği gibi, varsayılan değerler değişecektir, bu nedenle değerleri şimdi açıkça ayarlayarak, varsayılanlar değiştiğinde (yakın gelecekte) beklenmedik davranışlarla karşılaşmayacağınızdan emin olmak isterler.


oh, yani bu iki parametrenin varsayılan değerleri bazen değişecek? Bu çok daha mantıklı! Teşekkürler.
jmls

3
efsaneye göre, yakında değişecek :)
Qcom

2
Gelecekten burada. Yine de yakında değişecek :)
comphonia

53

Sorunu faydalı buldum:

https://github.com/expressjs/session/issues/56

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));

1
soruyu kod biçiminde yanıtladığınız için teşekkürler ... buralarda bunu yeterince
Dave

Güzel. Ayrıca, dokümanlara bir göz atmanızı tavsiye ederim. Benim durumumda onları false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ) olarak ayarlamak daha iyi oldu .
juanra

5

Bunu yorum olarak eklemek için yeterli temsilcim yok. Bunu, Ben'in cevabının varsayılan değeri için ekledim.

secret: process.env.SESSION_SECRET || '<mysecret>',

2
app.use(session({
  cookieName: 'session',
  secret: 'eg[isfd-8yF9-7w2315df{}+Ijsli;;to8',
  duration: 30 * 60 * 1000,
  activeDuration: 5 * 60 * 1000,
  httpOnly: true,
  secure: true,
  ephemeral: true,
  resave: true,
  saveUninitialized: true
}));

Benim için çalışıyor, belki seans sadece bazı ekstra ayarlara ihtiyaç duyuyordu. Teşekkürler
martinhajny
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.