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 بتاريخ On 21/2/2022 at 04:38 قال Hassan Hedr: في حال كنت تقوم بتجربة المشروع محليًا من دون استخدام HTTPS، حاول إضافة secure بالقيمة false للخاصية cookie ما يسمح بتعيين الكوكي حتى ولو كان الاتصال عن طريق HTTP كالتالي app.use(session({ ... cookie: { secure: false } })) حاول أيضًا بعد تعيين القيم داخل الجلسة استدعاء أمر الحفظ يدويًا كالتالي req.session.save() أظهر المزيد للاسف لم تحل المشكلة .. اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 بتاريخ On 21/2/2022 at 04:52 قال Samer Alashqar: للاسف لم تحل المشكلة .. أظهر المزيد المستودع الافتراضي لتخزين بيانات الجلسة هو في الذاكرة، كيف تقوم بالتحقق من عدم تخزين البيانات ضمن الجلسة اقتباس
0 Samer Alashqar نشر 21 فبراير 2022 الكاتب أرسل تقرير نشر 21 فبراير 2022 بتاريخ On 21/2/2022 at 04:58 قال Hassan Hedr: المستودع الافتراضي لتخزين بيانات الجلسة هو في الذاكرة، كيف تقوم بالتحقق من عدم تخزين البيانات ضمن الجلسة أظهر المزيد ان فهمتك .. فأنت تقصد كيف اتحقق ان تم تخزين البيانات ضمن الجلسة .. كل ما اقوم به هو console.log() عدا ذلك انا لا اعرف كيف اتحقق (ان كانت هناك طريقة اخرى) . اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 بتاريخ On 21/2/2022 at 05:04 قال Samer Alashqar: ان فهمتك .. فأنت تقصد كيف اتحقق ان تم تخزين البيانات ضمن الجلسة .. كل ما اقوم به هو console.log() عدا ذلك انا لا اعرف كيف اتحقق (ان كانت هناك طريقة اخرى) . أظهر المزيد هل يمكنك إرفاق شيفرة التخزين ضمن الجلسة والشيفرة التي تقوم بها بالاختبار عبر طباعة القيم ضمن الجلسة اقتباس
0 Samer Alashqar نشر 21 فبراير 2022 الكاتب أرسل تقرير نشر 21 فبراير 2022 بتاريخ On 21/2/2022 at 05:05 قال 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 بتاريخ On 21/2/2022 at 05:13 قال 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 بتاريخ On 21/2/2022 at 06:48 قال 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 بتاريخ On 21/2/2022 at 07:14 قال Samer Alashqar: لكن رسالة ال err لا تظهر الا اذا قمت بالذهاب لنفس route أظهر المزيد هل يمكنك إرفاق رسالة الخطأ التي تظهر ضمن الرد في الطلب أو ضمن الطرفية التي تعمل بها إجرائية الخادم اقتباس
0 Samer Alashqar نشر 21 فبراير 2022 الكاتب أرسل تقرير نشر 21 فبراير 2022 بتاريخ On 21/2/2022 at 07:37 قال Hassan Hedr: هل يمكنك إرفاق رسالة الخطأ التي تظهر ضمن الرد في الطلب أو ضمن الطرفية التي تعمل بها إجرائية الخادم أظهر المزيد ما قصدته في رسالة الخطأ هو undefined تحديدا .. اما رسالة خطأ ك Error: 500 في ال console. فا لا يتم ارسال رسالة خطأ ابدا فقط يظهر undefined دون رسالة خطأ اقتباس
0 Hassan Hedr نشر 21 فبراير 2022 أرسل تقرير نشر 21 فبراير 2022 بتاريخ On 21/2/2022 at 07:46 قال Samer Alashqar: ما قصدته في رسالة الخطأ هو undefined تحديدا .. اما رسالة خطأ ك Error: 500 في ال console. فا لا يتم ارسال رسالة خطأ ابدا فقط يظهر undefined دون رسالة خطأ أظهر المزيد إذا عملية الحفظ تتم بشكل سليم بما أنك تستخدم nodemon فعند كل عملية حفظ للملفات سيقوم الخادم بإعادة التشغيل وبالتالي خسارة كل بيانات الجلسة بما أن المخزن الافتراضي هو مخزن الذاكرة، حاول طلب المسار session/viaCode ثم طلب مسار الاختبار بعده مباشرة من دون أن تقوم بأي تعديلات على الملفات تؤدي لإعادة التشغيل بين العمليتين 1 اقتباس
السؤال
Samer Alashqar
لا يتم حفظ اي شيء اقوم بوضعه في حفظ الجلسة
11 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.