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

السؤال

نشر

لقد قمت بإضافة عملية التوثيق على خادم 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...