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?


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).


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


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>',

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
}));

Bekerja untuk saya, mungkin sesi hanya memerlukan beberapa pengaturan tambahan. Terima kasih
martinhajny
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.