اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

في حال كنت تقوم بتجربة المشروع محليًا من دون استخدام HTTPS، حاول إضافة secure بالقيمة false للخاصية cookie ما يسمح بتعيين الكوكي حتى ولو كان الاتصال عن طريق HTTP كالتالي

app.use(session({
  ...
  cookie: { secure: false }
})) 

حاول أيضًا بعد تعيين القيم داخل الجلسة استدعاء أمر الحفظ يدويًا كالتالي

req.session.save()

 

  • 0
نشر
  بتاريخ On 21‏/2‏/2022 at 04:38 قال Hassan Hedr:

في حال كنت تقوم بتجربة المشروع محليًا من دون استخدام HTTPS، حاول إضافة secure بالقيمة false للخاصية cookie ما يسمح بتعيين الكوكي حتى ولو كان الاتصال عن طريق HTTP كالتالي

app.use(session({
  ...
  cookie: { secure: false }
})) 

حاول أيضًا بعد تعيين القيم داخل الجلسة استدعاء أمر الحفظ يدويًا كالتالي

req.session.save()

 

أظهر المزيد  

للاسف لم تحل المشكلة ..

  • 0
نشر
  بتاريخ On 21‏/2‏/2022 at 04:58 قال Hassan Hedr:

المستودع الافتراضي لتخزين بيانات الجلسة هو في الذاكرة، كيف تقوم بالتحقق من عدم تخزين البيانات ضمن الجلسة

أظهر المزيد  

ان فهمتك ..

فأنت تقصد كيف اتحقق ان تم تخزين البيانات ضمن الجلسة ..

كل ما اقوم به هو 

console.log()

عدا ذلك انا لا اعرف كيف اتحقق (ان كانت هناك طريقة اخرى) .

  • 0
نشر
  بتاريخ On 21‏/2‏/2022 at 05:04 قال Samer Alashqar:

ان فهمتك ..

فأنت تقصد كيف اتحقق ان تم تخزين البيانات ضمن الجلسة ..

كل ما اقوم به هو 

console.log()

عدا ذلك انا لا اعرف كيف اتحقق (ان كانت هناك طريقة اخرى) .

أظهر المزيد  

هل يمكنك إرفاق شيفرة التخزين ضمن الجلسة والشيفرة التي تقوم بها بالاختبار عبر طباعة القيم ضمن الجلسة

  • 0
نشر
  بتاريخ 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()
    }
}

 

  • 0
نشر
  بتاريخ 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
نشر
  بتاريخ 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 !')
    })
  }

 

  • 0
نشر
  بتاريخ On 21‏/2‏/2022 at 07:14 قال Samer Alashqar:

لكن رسالة ال err لا تظهر الا اذا قمت بالذهاب لنفس route

أظهر المزيد  

هل يمكنك إرفاق رسالة الخطأ التي تظهر ضمن الرد في الطلب أو ضمن الطرفية التي تعمل بها إجرائية الخادم

  • 0
نشر
  بتاريخ On 21‏/2‏/2022 at 07:37 قال Hassan Hedr:

هل يمكنك إرفاق رسالة الخطأ التي تظهر ضمن الرد في الطلب أو ضمن الطرفية التي تعمل بها إجرائية الخادم

أظهر المزيد  

ما قصدته في رسالة الخطأ هو undefined تحديدا ..

اما رسالة خطأ ك Error: 500 في ال console. فا لا يتم ارسال رسالة خطأ ابدا فقط يظهر  undefined دون رسالة خطأ 

62134341c4767_2022-02-21(1).thumb.png.31f41422acb8407712d1271711c995b4.png

  • 0
نشر
  بتاريخ On 21‏/2‏/2022 at 07:46 قال Samer Alashqar:

ما قصدته في رسالة الخطأ هو undefined تحديدا ..

اما رسالة خطأ ك Error: 500 في ال console. فا لا يتم ارسال رسالة خطأ ابدا فقط يظهر  undefined دون رسالة خطأ 

أظهر المزيد  

إذا عملية الحفظ تتم بشكل سليم بما أنك تستخدم nodemon فعند كل عملية حفظ للملفات سيقوم الخادم بإعادة التشغيل وبالتالي خسارة كل بيانات الجلسة بما أن المخزن الافتراضي هو مخزن الذاكرة، حاول طلب المسار session/viaCode ثم طلب مسار الاختبار بعده مباشرة من دون أن تقوم بأي تعديلات على الملفات تؤدي لإعادة التشغيل بين العمليتين

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...