Samer Alashqar نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 لا يتم حفظ اي شيء اقوم بوضعه في حفظ الجلسة app.use(session({ secret: process.env.SECRET_KEY, resave: false, saveUninitialized: true, })) req.session.token = token; req.session.save((err) => { console.log(err); }) //returns undefined 1 اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 في حال كنت تقوم بتجربة المشروع محليًا من دون استخدام HTTPS، حاول إضافة secure بالقيمة false للخاصية cookie ما يسمح بتعيين الكوكي حتى ولو كان الاتصال عن طريق HTTP كالتالي app.use(session({ ... cookie: { secure: false } })) حاول أيضًا بعد تعيين القيم داخل الجلسة استدعاء أمر الحفظ يدويًا كالتالي req.session.save() اقتباس
0 Samer Alashqar نشر 21 فبراير 2022 الكاتب أرسل تقرير نشر 21 فبراير 2022 بتاريخ 13 دقائق مضت قال Hassan Hedr: في حال كنت تقوم بتجربة المشروع محليًا من دون استخدام HTTPS، حاول إضافة secure بالقيمة false للخاصية cookie ما يسمح بتعيين الكوكي حتى ولو كان الاتصال عن طريق HTTP كالتالي app.use(session({ ... cookie: { secure: false } })) حاول أيضًا بعد تعيين القيم داخل الجلسة استدعاء أمر الحفظ يدويًا كالتالي req.session.save() للاسف لم تحل المشكلة .. اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 بتاريخ 5 دقائق مضت قال Samer Alashqar: للاسف لم تحل المشكلة .. المستودع الافتراضي لتخزين بيانات الجلسة هو في الذاكرة، كيف تقوم بالتحقق من عدم تخزين البيانات ضمن الجلسة اقتباس
0 Samer Alashqar نشر 21 فبراير 2022 الكاتب أرسل تقرير نشر 21 فبراير 2022 بتاريخ 3 دقائق مضت قال Hassan Hedr: المستودع الافتراضي لتخزين بيانات الجلسة هو في الذاكرة، كيف تقوم بالتحقق من عدم تخزين البيانات ضمن الجلسة ان فهمتك .. فأنت تقصد كيف اتحقق ان تم تخزين البيانات ضمن الجلسة .. كل ما اقوم به هو console.log() عدا ذلك انا لا اعرف كيف اتحقق (ان كانت هناك طريقة اخرى) . اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 بتاريخ 1 دقيقة مضت قال Samer Alashqar: ان فهمتك .. فأنت تقصد كيف اتحقق ان تم تخزين البيانات ضمن الجلسة .. كل ما اقوم به هو console.log() عدا ذلك انا لا اعرف كيف اتحقق (ان كانت هناك طريقة اخرى) . هل يمكنك إرفاق شيفرة التخزين ضمن الجلسة والشيفرة التي تقوم بها بالاختبار عبر طباعة القيم ضمن الجلسة اقتباس
0 Samer Alashqar نشر 21 فبراير 2022 الكاتب أرسل تقرير نشر 21 فبراير 2022 بتاريخ 1 ساعة قال Hassan Hedr: هل يمكنك إرفاق شيفرة التخزين ضمن الجلسة والشيفرة التي تقوم بها بالاختبار عبر طباعة القيم ضمن الجلسة //تخزين الجلسة app.use(session({ secret: process.env.SECRET_KEY, resave: false, saveUninitialized: true, cookie: { secure: false }, })) //التحقق من وجود البيانات ضمن الجلسة app.get('/' , (req,res) => { console.log(req.session.token) // ملاحضة: هذا السطر لا اقوم باضافته الا بعد عملية تخزين البيانات ضمن الجلسة res.sendFile(path.join(__dirname , './views/index.html')) }) //تخزين البيانات ضمن الجلسة exports.viaCode = (req,res) => { try { //انشاء كائن يحوي رقم عشوائي var payload ={ number:randomNum (), } //انشاء توكين const token = jwt.sign(payload, process.env.VERIFY_TOKEN , {expiresIn: '10m'}); var user = new User ({ isVerified: false, }) //تخزين البيانات ضمن الجلسة const newUser = user.save(); req.session.token = token; req.session.save((err) => { console.log(err); }) } catch (error) { console.log(error) res.status(500).send() } } 1 اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 بتاريخ 1 ساعة قال Samer Alashqar: //تخزين الجلسة app.use(session({ secret: process.env.SECRET_KEY, resave: false, saveUninitialized: true, cookie: { secure: false }, })) //التحقق من وجود البيانات ضمن الجلسة app.get('/' , (req,res) => { console.log(req.session.token) // ملاحضة: هذا السطر لا اقوم باضافته الا بعد عملية تخزين البيانات ضمن الجلسة res.sendFile(path.join(__dirname , './views/index.html')) }) //تخزين البيانات ضمن الجلسة exports.viaCode = (req,res) => { try { //انشاء كائن يحوي رقم عشوائي var payload ={ number:randomNum (), } //انشاء توكين const token = jwt.sign(payload, process.env.VERIFY_TOKEN , {expiresIn: '10m'}); var user = new User ({ isVerified: false, }) //تخزين البيانات ضمن الجلسة const newUser = user.save(); req.session.token = token; req.session.save((err) => { console.log(err); }) } catch (error) { console.log(error) res.status(500).send() } } هل قمت بتسجيل viaCode بشكل صحيح ضمن الموجه، حاول أيضًا إضافة إرسال جواب بعد حفظ الجلسة بشكل سليم أو إرسال خطأ وذلك للتأكد بأن العملية تتم بشكل صحيح req.session.save((err) => { console.log(err); if(err) res.status(500).send(err.message); else res.send({ token }) }) اقتباس
0 Samer Alashqar نشر 21 فبراير 2022 الكاتب أرسل تقرير نشر 21 فبراير 2022 بتاريخ 20 دقائق مضت قال Hassan Hedr: هل قمت بتسجيل viaCode بشكل صحيح ضمن الموجه، حاول أيضًا إضافة إرسال جواب بعد حفظ الجلسة بشكل سليم أو إرسال خطأ وذلك للتأكد بأن العملية تتم بشكل صحيح req.session.save((err) => { console.log(err); if(err) res.status(500).send(err.message); else res.send({ token }) }) قمت بالتجربة لكن رسالة ال err لا تظهر الا اذا قمت بالذهاب لنفس route علما انني استخدم ajax .. قمت بانشاء ajax جديد و route جديد للاختبار لكن كل ما يتم ارجاعه من هذه الشيفرة هو undefined req.session.save((err) => { console.log(err); if(err) res.status(500).send(err.message); else res.send('success !') }) هذا الروت الجديد : // عملية ارسال ajax $.ajax("http://localhost:8080/session/viaCode",{ type: 'GET', xhrFields: { withCredentials: true }, crossDomain: true, success: (res) => { console.log('success !') }, error: (err) => { console.log(err) } }) //الروت app.get('/session/viaCode' ,userController.sessionViaCode); //controller exports.sessionViaCode = (req,res) => { req.session.num = 5; req.session.save((err) => { console.log(err); if(err) res.status(500).send(err.message); else res.send('success !') }) } 1 اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 بتاريخ 21 دقائق مضت قال Samer Alashqar: لكن رسالة ال err لا تظهر الا اذا قمت بالذهاب لنفس route هل يمكنك إرفاق رسالة الخطأ التي تظهر ضمن الرد في الطلب أو ضمن الطرفية التي تعمل بها إجرائية الخادم اقتباس
0 Samer Alashqar نشر 21 فبراير 2022 الكاتب أرسل تقرير نشر 21 فبراير 2022 بتاريخ 4 دقائق مضت قال Hassan Hedr: هل يمكنك إرفاق رسالة الخطأ التي تظهر ضمن الرد في الطلب أو ضمن الطرفية التي تعمل بها إجرائية الخادم ما قصدته في رسالة الخطأ هو undefined تحديدا .. اما رسالة خطأ ك Error: 500 في ال console. فا لا يتم ارسال رسالة خطأ ابدا فقط يظهر undefined دون رسالة خطأ اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 بتاريخ 3 دقائق مضت قال Samer Alashqar: ما قصدته في رسالة الخطأ هو undefined تحديدا .. اما رسالة خطأ ك Error: 500 في ال console. فا لا يتم ارسال رسالة خطأ ابدا فقط يظهر undefined دون رسالة خطأ إذا عملية الحفظ تتم بشكل سليم بما أنك تستخدم nodemon فعند كل عملية حفظ للملفات سيقوم الخادم بإعادة التشغيل وبالتالي خسارة كل بيانات الجلسة بما أن المخزن الافتراضي هو مخزن الذاكرة، حاول طلب المسار session/viaCode ثم طلب مسار الاختبار بعده مباشرة من دون أن تقوم بأي تعديلات على الملفات تؤدي لإعادة التشغيل بين العمليتين 1 اقتباس
السؤال
Samer Alashqar
لا يتم حفظ اي شيء اقوم بوضعه في حفظ الجلسة
11 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.