एक्सप्रेस 4.0, विषम चेतावनी संदेश के साथ एक्सप्रेस-सत्र


105

मैं एक्सप्रेस 4.x का उपयोग करके एक नोडज एप्लिकेशन स्थापित करने के माध्यम से काम करने की कोशिश कर रहा हूं। मिडलवेयर हटाने के मुद्दों के माध्यम से ठोकर खाने के बाद, मैंने आखिरकार इसे काम कर लिया।

हालाँकि, कोड की निम्नलिखित पंक्ति में कुछ चेतावनी संदेश थे:

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

ये चेतावनी थी:

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

दस्तावेज़ में, resave और saveUninitialized के लिए डिफ़ॉल्ट मान सत्य हैं।

इसलिए, पढ़ने के लिए कोड बदलना

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

चेतावनियों से छुटकारा मिला।

तो, प्रश्न के बिंदु तक पहुँचने के लिए:

यदि मुझे डिफ़ॉल्ट मान हैं, तो मुझे इन मानों को पास क्यों करना चाहिए और मुझे अन्य विकल्पों में पास क्यों नहीं करना चाहिए?


1
क्योंकि ये डिफ़ॉल्ट मान बदल जाएंगे और जब वे ऐसा करते हैं, तो आप उन त्रुटियों से बच सकते हैं, जो स्पष्ट रूप से उन्हें मिडलवेयर में
भेजने के

12
मैं प्यार करता हूँ कि वे किस तरह काम आते हुए आप नहीं बता क्या डिफ़ॉल्ट विकल्प हैं
Brade

4
दोनों resaveऔर saveUnitializedtrue
बूलियन

1
@cfs: यह होना चाहिए saveUninitialized। मैंने कॉपी किया था कि आपने क्या पोस्ट किया था और 45 मिनटों तक यह पता लगाने की कोशिश की कि चेतावनी दूर नहीं हो रही है। बाद में मुझे महसूस हुआ कि वर्तनी की गलती थी। lol: D
AdityaParab

1
व्यर्थ समय के बारे में क्षमा करें मनमौजी :) दुर्भाग्य से, यह टिप्पणी संपादित करने के लिए मेरे लिए बहुत पुरानी है, अन्यथा मैं अपना टाइपो ठीक करता: /
cfs

जवाबों:


68

जैसा कि चेतावनी कहती है, डिफ़ॉल्ट मान बदल जाएंगे, इसलिए वे यह सुनिश्चित करना चाहते हैं कि अब मूल्यों को स्पष्ट रूप से सेट करके, आप अप्रत्याशित व्यवहार में नहीं चलेंगे, जब चूक (निकट भविष्य में) बदल जाएगी।


ओह, तो इन दो मापदंडों के लिए डिफ़ॉल्ट मान कुछ समय में बदलने जा रहे हैं? यह बहुत अधिक समझ में आता है! धन्यवाद।
jmls

3
किंवदंती है, अभी भी जल्द ही बदलने जा रहा है :)
Qcom

2
भविष्य से यहां। फिर भी जल्द ही बदलने जा रहा है :)
comphonia

53

मुझे समस्या उपयोगी लगी:

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

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

1
कोड के रूप में प्रश्न का उत्तर देने के लिए धन्यवाद ... यह चारों ओर पर्याप्त नहीं है
डेव

अच्छा लगा। इसके अलावा, मैं डॉक्स पर एक नज़र डालने की सलाह दूंगा। मेरे मामले में उन्हें false( github.com/expressjs/session#resave , github.com/expressjs/session#saveuninitialized ) सेट करना बेहतर था ।
जुआन

5

मेरे पास टिप्पणी के रूप में इसे जोड़ने के लिए पर्याप्त प्रतिनिधि नहीं है। मैंने इसे बेन के जवाब के अपने डिफ़ॉल्ट मूल्य के लिए जोड़ा।

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

मेरे लिए काम करता है, शायद सत्र को बस कुछ अतिरिक्त सेटिंग्स की आवश्यकता थी। धन्यवाद
martinhajny
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.