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

التأكد من أن المستخدم قام بتسجيل الدخول في node.js حزمة passport.js

Bassel Jhr

السؤال

لقد قمت بإضافة عملية التوثيق على خادم node.js باستخدام المكتبة passport.js وما أحاول تطبيقه الآن هو معرفة في حال كان المستخدم قد سجّل دخوله أم لا لإظهار عناصر محددة من الصفحة بهذا الشكل:

(if loggedIn)
   <button>logout</button>

(else)
   <button>login</button>
   <button>register</button>

كيف يمكنني تحديد إذا كان المستخدم مسجّل دخوله إلى الموقع في passport ؟ وهل يتم التحقق من طرف الخادم أم من طرف المستخدم؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

إذا قام المستخدم بتسجيل الدخول، سيتم إنشاء الغرض user ضمن نسخة الطلب req وإرساله مع كل طلب في express.js والذي يتيح لك التأكد من وجوده أو التحقق من المعلومات الموجودة فيه من خلال أي وسيط:

if (req.user) {
   //قام المستخدم بتسجيل الدخول
} else {
   ...
}

كما يمكنك فصل عملية التحقق إلى وسيط خارجي واستدعائه عند اللزوم بالشكل التالي:

function isLoggedIn(req, res, next) {
    if (req.user) {
        next();
    } else {
        res.redirect('/login');
    }
}

بحيث سيتم إعادة توجيه المستخدم إلى صفحة تسجيل الدخول في حال حاول الوصول إلى أي جزء من الكود البرمجي لديك يحتاج توثيق. ويمكنك استخدام الوسيط السابق بالشكل التالي:

app.get('/testLogin', isLoggedIn, function(req, res, next) {
   ...
});

بحيث سيتم الدخول إلى الوسيط والتأكد من تسجيل الدخول قبل الوصول إلى هذا الكود

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

بعد تسجيل الدخول ستستطيع الوصول لبيانات user عن طريق req.user بهذا الشكل 

الآن أنت تحتاج أن تتحقق من أن هذا user قد قام بتسجيل الدخول من خلال views 

لعمل ذلك ستحتاج إلى عمل متغيير تقوم فيه بتخزين بيانات user ومن ثم تمريرها للـ views

تستطيع عمل ذلك بالشكل التالي : 

app.use((req, res, next) => {
  res.locals.user = req.user;
  next();
});

هنا req.locals.user ستسمح لنا بقراءة المتغيير user على أي ملف من ملفات veiws 

الآن بكل بساطة بداخل اي ملف view 

(if user)
   <button>logout</button>

(else)
   <button>login</button>
   <button>register</button>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...