express 4.0, phiên nhanh với thông báo cảnh báo kỳ quặc


105

Tôi đang cố gắng thiết lập ứng dụng nodejs bằng express 4.x. Sau khi vấp phải các vấn đề về loại bỏ phần mềm trung gian, cuối cùng tôi đã làm được.

tuy nhiên, có một vài thông báo cảnh báo trong dòng mã sau:

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

những cảnh báo này là:

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

trong tài liệu, các giá trị mặc định cho resave và saveUninitialized là đúng.

vì vậy, thay đổi mã để đọc

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

đã thoát khỏi các cảnh báo.

Vì vậy, để đi đến vấn đề của câu hỏi:

tại sao tôi phải chuyển các giá trị này vào nếu chúng là giá trị mặc định và tại sao tôi không phải chuyển trong các tùy chọn khác?


1
bởi vì những giá trị mặc định sẽ thay đổi và khi họ làm, bạn có thể tránh các lỗi có thể gây ra bằng cách đi qua một cách rõ ràng họ đến middleware
soulcheck

12
Tôi yêu cách họ helpfully KHÔNG cho bạn biết những gì các tùy chọn mặc định là
Brade

4
Cả resavesaveUnitializedlà phép toán mà mặc định truetrong 1.7.2: github.com/expressjs/session
CFS

1
@cfs: Chắc là vậy saveUninitialized. Tôi đã sao chép những gì bạn đã đăng và lãng phí 45 phút cố gắng tìm ra cảnh báo sẽ không biến mất. Sau đó tôi nhận ra có một lỗi chính tả. lol: D
AdityaParab

1
Xin lỗi về sự lãng phí thời gian Maverick :) Thật không may, những nhận xét là quá già cho tôi để chỉnh sửa, nếu không tôi sẽ sửa chữa lỗi đánh máy của tôi: /
CFS

Câu trả lời:


68

Như các cảnh báo đã nói, các giá trị mặc định sẽ thay đổi vì vậy họ muốn đảm bảo rằng bằng cách đặt các giá trị một cách rõ ràng ngay bây giờ, bạn sẽ không gặp phải hành vi không mong muốn khi các giá trị mặc định thay đổi (trong tương lai gần).


ồ, vậy giá trị mặc định cho hai thông số này sẽ thay đổi vào lúc nào? Điều đó có lý hơn! cảm ơn.
jmls

3
huyền thoại có nó, vẫn sẽ sớm thay đổi :)
Qcom

2
Từ tương lai đây. Vẫn sẽ sớm thay đổi :)
comphonia

53

Tôi thấy vấn đề hữu ích:

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

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

1
cảm ơn bạn đã trả lời câu hỏi dưới dạng mã ... không thấy đủ ở đây
Dave

Đẹp. Ngoài ra, tôi khuyên bạn nên xem qua các tài liệu. Trong trường hợp của tôi, tốt hơn là đặt chúng thành false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ).
juanra

5

Tôi không có đủ đại diện để thêm điều này làm bình luận. Tôi đã thêm điều này cho giá trị mặc định của tôi cho câu trả lời của 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
}));

Hoạt động đối với tôi, có thể phiên chỉ cần một số cài đặt bổ sung. Cảm ơn
martinhajny
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.