मिडलवेयर की दृश्यता के लिए एक पासवर्ड (नोड जे एस)

0

सवाल

दिए गए निम्न रूटर-परिदृश्य:

router.get('/A', [returns password])
router.get('/B', [returns no password])

क्या चाहिए एक सही मिडलवेयर की तरह लग रही है कि रिटर्न पासवर्ड मार्ग पर निर्भर करता है?

मेरा प्रयास इस तरह दिखता है:

function passwordCheck(req, res, next) {
  let user= req.body_id
  User.findOne({_id: id}).select('+password').exec(function(err, result) {
    if (err) {
      console.log("error: " + err)
    } else {

      console.log("okay.");
      res.send(result)
    }
  })
}
express javascript mongoose router
2021-11-22 11:51:13
1

सबसे अच्छा जवाब

0

आप कर सकते हैं बनाने के लिए कुछ इसी तरह मिडलवेयर कारखाने:

const checkPassword = (returnPassword = false) => {
    return (req, res, next) => {
        User.findOne({_id: req.body_id })
        .select('+password')
        .exec((err, result) => {
            if (err) {
                console.error(err);
                return res.status(500).send() // End of request on error?
            } else {
                const password = result['password'] // get your password this way or somehow else
                if (returnPassword) {
                    // Store password in request if returnPassword=true 
                    res.locals.userPassword = password;
                } 
                next();
            }
        })
    }
}

उपयोग:

router.get('/A', checkPassword(true), routeA)
router.get('/B', checkPassword(false), routeB)

पहुँच मार्गों में:

router.get('/', (req, res) => {
  console.log(res.locals.userPassword) // Actual password for /A, undefined for /B
});

इसके अलावा बाहर की जाँच एक्सप्रेस डॉक्स: लेखन मिडलवेयर के लिए उपयोग में व्यक्त क्षुधा क्या है समझने के लिए next और यह कैसे काम करता है (मैंने देखा है कि आप का उपयोग नहीं किया यह अपने प्रयास में).
यह भी मुझे लगता है कि आप कुछ typos:

  • select('+password') - आप यकीन कर रहे हैं प्लस आवश्यक है?
  • findOne({_id: id}) - होना चाहिए findOne({_id: user})? या क्यों आप परिभाषित user अन्यथा?

P. S. ... और कभी नहीं भूल करने के लिए संभाल त्रुटियों :)

2021-11-22 14:23:19

मैं जोड़ सकते हैं, कि हम प्रयास करना चाहिए स्टोर करने के लिए हमारे चर की तरह कुछ में res.locals के बजाय करने के लिए सीधे req. इस आदत को ओवरराइड हो सकता महत्वपूर्ण चर में req वस्तु.
Someone Special

@SomeoneSpecial पर सहमत हुए, के लिए धन्यवाद टिप! मैं अपने कोड अद्यतन
Xeelley

मैं लगभग वहाँ हूँ: if(!req.body.userID && !req.body.userName && !req.body.password) { let so userService.getUsers(function(error, users) { for(let i = 0; i < users.length; i++){ console.log(users[i].noPassword) so=users[i].noPassword() console.log(so) /* res.write(so) */ res.write(toString(so)) } res.end() }) } मैं के माध्यम से पुनरावृति नेवला वस्तुओं और मिटा प्रत्येक पर एक पासवर्ड. लेकिन कैसे मैं डाल कर इन नई वस्तुओं को वापस करने के लिए एक संग्रह ?
pawl123

@pawl123 कृपया. नहीं टिप्पणियों का उपयोग के लिए कोड के टुकड़े (के लिए पठनीयता प्रयोजनों के लिए), बेहतर अद्यतन अपने जवाब.
Xeelley

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में