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

السؤال

نشر

أقوم باستخدام Express في node.js وقمت بإنشاء وسيط قبل تنفيذ تابع معيّن بالشكل التالي:

app.get('/admins', Role, function(req,res){
	...
})

ولكن هل من الممكن تمرير متغيّرات ضمن هذا الوسيط Role؟ بحيث تكون هذه المتغيرات من الطلب request نفسه؟

Recommended Posts

  • 1
نشر

نعم تستطيع بناء وسيط middleware لعمل ذلك ، ويمكنك بناء الدالة على هذا الشكل

function Role(role) {
  return function(req, res, next) {
    if (role !== req.user.role) res.redirect(...);
    else next();
  }
}

ويمكنك إستخدام هذا الكود للتأكد من أنك لا تقوم بعمل نسخ متعددة من نفس الدالة:

function Role(role) {
  return Role[role] || (Role[role] = function(req, res, next) {
    if (role !== req.user.role) res.redirect(...);
    else next();
  })
}

 

  • 0
نشر

أو يمكنك كتابة الدلة في الموجه admins  على الشكل التالي:

app.get('/admins', (req, res, next) => {
  role(req, res, next, req.user.role);
}, (req,res) => { 
    // admins  أوامر الموجه 
});

بعد ذلك تكتب  role middleware  على الشكل التالي:

const role = (req, res, next, role_name) => {
   if(role_name != 'admin'){
     // هنا مثلا يمكنك التخقق من دور المستخدم ثم إجراء التحوبل إلى صفحة أخرى
   }
   next();
};

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...