express 4.0, sesi ekspres dengan pesan peringatan aneh

105

Saya mencoba untuk bekerja melalui pengaturan aplikasi nodejs menggunakan express 4.x. Setelah tersandung melalui masalah penghapusan middleware, saya akhirnya berhasil.

Namun, ada beberapa pesan peringatan di baris kode berikut:

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

peringatan ini adalah:

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

dalam dokumentasi, nilai default untuk resave dan saveUninitialized adalah true.

jadi, mengubah kode untuk dibaca

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

singkirkan peringatan itu.

Jadi, untuk langsung ke inti pertanyaannya:

mengapa saya harus meneruskan nilai-nilai ini jika itu adalah nilai default, dan mengapa saya tidak harus meneruskan di opsi lain?

jmls
sumber
1
karena nilai default ini akan berubah dan, jika berubah, Anda dapat menghindari kesalahan yang dapat terjadi dengan meneruskannya secara eksplisit ke middleware
soulcheck
12
Saya suka bagaimana mereka membantu JANGAN memberi tahu Anda apa saja opsi default
Brade
4
Baik resavedan saveUnitializedyang boolean yang default truedi 1.7.2: github.com/expressjs/session
CFS
1
@ Cfs: Seharusnya begitu saveUninitialized. Saya menyalin apa yang Anda posting dan menghabiskan 45 menit mencoba mencari tahu apa peringatan itu tidak akan hilang. Kemudian saya menyadari ada kesalahan ejaan. lol: D
AdityaParab
1
Maaf tentang waktu yang terbuang, Maverick :) Sayangnya, komentar tersebut terlalu lama untuk saya edit, jika tidak, saya akan memperbaiki kesalahan ketik saya: /
cfs

Jawaban:

68

Seperti yang diperingatkan, nilai default akan berubah sehingga mereka ingin memastikan bahwa dengan menyetel nilai secara eksplisit sekarang, Anda tidak akan mengalami perilaku tak terduga saat default berubah (dalam waktu dekat).

mscdex.dll
sumber
oh, jadi nilai default untuk kedua parameter ini akan berubah sewaktu-waktu? Itu jauh lebih masuk akal! Terima kasih.
jmls
3
menurut legenda, masih akan segera berubah :)
Qcom
2
Dari masa depan di sini. Masih akan segera berubah :)
comphonia
53

Saya menemukan masalah berguna:

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

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));
Ben
sumber
1
terima kasih telah menjawab pertanyaan dalam bentuk kode ... tidak cukup di sini
Dave
Bagus. Juga, saya akan merekomendasikan untuk melihat dokumennya. Dalam kasus saya, lebih baik menyetelnya ke false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ).
juanra
5

Saya tidak memiliki cukup perwakilan untuk menambahkan ini sebagai komentar. Saya menambahkan ini untuk nilai default saya dari jawaban Ben.

secret: process.env.SESSION_SECRET || '<mysecret>',
DragonKnight
sumber
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
}));
Vijay Prajapati
sumber
Bekerja untuk saya, mungkin sesi hanya memerlukan beberapa pengaturan tambahan. Terima kasih
martinhajny