मैं अपने express.js
अनुप्रयोग में एक सरल मिडलवेयर समारोह का उपयोग कर रहा एक उपयोगकर्ता व्यवस्थापक विशेषाधिकार है कि क्या सत्यापित करने के लिए:यह सत्यापित कर रहा है कि कोई उपयोगकर्ता req.user पर आधारित व्यवस्थापक है या नहीं?
function isAdmin (req, res, next) {
if (req.user.admin)
return next();
res.redirect("/");
}
passport
खाता प्रमाणीकरण के लिए इस्तेमाल किया जा रहा है।
क्या यह सुरक्षित है या req.user.admin
उन उपयोगकर्ताओं के अनुरोध में इंजेक्शन दिया जा सकता है, जिनके पास व्यवस्थापकीय विशेषाधिकार नहीं हैं? क्या मुझे पहले उपयोगकर्ता को ढूंढना चाहिए और फिर जांचें कि क्या उपयोगकर्ता के पास व्यवस्थापकीय विशेषाधिकार हैं या नहीं? उदाहरण के लिए:
function isAdmin (req, res, next) {
if (req.user) {
User.findOne({ "_id" : req.user._id }, function (err, user) {
if (err) {
throw err;
} else if (user.admin) {
return next();
} else {
res.redirect("/");
}
})
} else {
res.redirect("/");
}
}
मेरे लिए, यह अनिवार्य रूप से जटिल लगता है। इससे अधिक डेटाबेस एक्सेस भी हो जाएंगे। क्या यह सत्यापित करना आवश्यक है कि कोई उपयोगकर्ता वास्तव में एक व्यवस्थापक है या मेरा पहला कार्य पर्याप्त है? संक्षेप में, req
को कौन देख सकता है या बदल सकता है, और इस प्रकार, req.user
?
यह प्रश्न आपके लिए प्रासंगिक हो सकता है: http://stackoverflow.com/questions/24649274/authentication-with-passport-can-i-trust-that-req-user-is-indeed-the-logged-in – dylants